我正在尝试解析输入文件,其中包含数千行文本
[month/day/year hh:mm:ss AM/PM] FirstName1 LastName1: text....
[month/day/year hh:mm:ss AM/PM] FirstName2 LastName2: text....
我需要删除方括号FirstName
和LastName
之间的文字,只留下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个字母或其他东西?)。我没有经常使用正则表达式,所以任何建议都会受到赞赏。
答案 0 :(得分:4)
作为正则表达式的替代方法,您可以在第一次出现:
+空格时拆分字符串。
text = line.split(": ", 1)[1]
答案 1 :(得分:2)
如果你可以假设名字和姓氏没有任何空格你可以做
''.join(line.split(' ')[5:])