我使用python 2.7.
我在文件’a’中有数据:
myname1@abc.com;description1
myname2@abc.org;description2
myname3@this_is_ok.ok;description3
myname5@qwe.in;description4
myname4@qwe.org;description5
abc@ok.ok;description7
我读这个文件就像:
with open('a', 'r') as f:
data = [x.strip() for x in f.readlines()]
我有一个名为坏的列表:
bad = ['abc', 'qwe'] # could be more than 20 elements
现在我试图在@之后用’abc’和’qwe’删除所有行,并将其余部分写入新文件.
所以在newfile中应该只有2行:
myname3@this_is_ok.ok;description3
abc@ok.ok;description7
我一直在尝试使用regexp(.?)@(.?);(.*)来获取组,但我不知道接下来该做什么.
请告诉我!
解决方法:
import re
bad = ['abc', 'qwe']
with open('a') as f:
print [line.strip()
for line in f
if not re.search('|'.join(bad), line.partition('@')[2]]
只要坏只包含普通字符,该解决方案就可以工作.字母,数字,下划线,但没有任何干扰正则表达式,如’a | b’,正如@phihag所指出的那样.
标签:python,list,regex,parsing
来源: https://codeday.me/bug/20190902/1787577.html