0

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

别名:something@gmail.com
alias2:something2@gmail.com
alias3:something3@gmail.com
alias4:something4@gmail.com
alias5:something5@gmail.com

如何编写正则表达式来获取冒号之前的部分(别名、别名 2 等)?抱歉,如果这是一个非常简单的问题,我是 Python 新手。提前致谢!

4

2 回答 2

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)
于 2013-02-28T20:44:03.977 回答
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]
于 2013-02-28T21:04:39.560 回答