这有效:
import re
st='''\
String1_Todelete_restofstring.txt
String2_Alsotoremove_restofstring.txt
String3_2013_restofstring.txt
String4_2011_restofstring.txt
String5_restofstring_tosuppress.txt'''
deletions=["Todelete", '2013','2011', "Alsotoremove","tosuppress"]
for line in st.splitlines():
for deletion in deletions:
if re.search('_'+deletion,line):
line=re.sub('_'+deletion,'',line)
print line
编辑
正如评论中指出的那样,这re.search
是多余的。
此外,在特定情况下, str.replace更快:
import re
import timeit
st='''\
String1_Todelete_restofstring.txt
String2_Alsotoremove_restofstring.txt
String3_2013_restofstring.txt
String4_2011_restofstring.txt
String5_restofstring_tosuppress.txt'''
deletions=["Todelete", '2013','2011', "Alsotoremove","tosuppress"]
def rep():
for line in st.splitlines():
for deletion in deletions:
line=line.replace('_'+deletion,'')
def reg():
for line in st.splitlines():
for deletion in deletions:
line=re.sub('_'+deletion,'',line)
print timeit.timeit('reg()', setup='from __main__ import reg', number=10000)
print timeit.timeit('rep()', setup='from __main__ import rep', number=10000)
在我的机器上,str.replace()
大约快 5 倍。