Python正则表达式(可以缩短它吗?)

时间:2013-12-06 03:43:16

标签: python regex

我正在尝试解析输入文件,其中包含数千行文本

[month/day/year hh:mm:ss AM/PM] FirstName1 LastName1: text.... 

[month/day/year hh:mm:ss AM/PM] FirstName2 LastName2: text....

我需要删除方括号FirstNameLastName之间的文字,只留下text部分。我用蛮力的方式做到了,但我确信有更优雅的方式:

with open('inputfile.txt') as fin, open('file-out.txt','w') as fout:
    for line in fin:
        fout.write(re.sub('(\[[^)]*\])+(\sFirstName1 LastName1|\sFirstName2 LastName2)', '',line))

有没有办法缩短这个正则表达式(例如只使用名字的前2个字母和姓氏的最后2个字母或其他东西?)。我没有经常使用正则表达式,所以任何建议都会受到赞赏。

2 个答案:

答案 0 :(得分:4)

作为正则表达式的替代方法,您可以在第一次出现: +空格时拆分字符串。

text = line.split(": ", 1)[1]

答案 1 :(得分:2)

如果你可以假设名字和姓氏没有任何空格你可以做

''.join(line.split(' ')[5:])