Python - 正则表达式帮助

时间:2013-02-28 20:40:41

标签: python regex

我想知道我是否可以在提出正则表达方面得到一些帮助。我有一个文件,其中包含各种别名的长列表以及别名转发的电子邮件地址。该文件的格式如下:

别名:something@gmail.com
别名2:something2@gmail.com
别名3:something3@gmail.com
alias4:something4@gmail.com
alias5:something5@gmail.com

如何编写正则表达式来抓取冒号前面的部分(别名,alias2等)?对不起,如果这是一个非常简单的问题,我是Python的新手。提前谢谢!

2 个答案:

答案 0 :(得分:1)

这是列表理解

first_parts = [
    line.split(':')[0]
    for line in file("addresses.txt").readlines()
    if ':' in line
]

与此相似

first_parts = []
lines = file("addresses.txt").readlines()
for lines in lines:
    if ":" in line:
        first = line.split(":")[0]
        first_parts.append(first)

答案 1 :(得分:1)

我建议您使用split()来解决此问题,因为您有一个非常明显的分隔符。但是,这是一个使用正则表达式的解决方案:

lines = open(filename).readlines()
regex = re.compile("(.*):.*@gmail\.com")
aliases = [m.group(1) for m in map(lambda x: regex.match(x), lines) if m]