我使用 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 的列表:
bad = ['abc', 'qwe'] # could be more than 20 elements
现在我试图删除所有在@ 之后带有“abc”和“qwe”的行,并将其余部分写入新文件。 所以在 newfile 中应该只有 2 行:
myname3@this_is_ok.ok;description3
abc@ok.ok;description7
我一直在尝试使用正则表达式 (.?)@(.?);(.*) 来获取组,但我不知道下一步该怎么做。
请多多指教!
最佳答案
这是一个非正则表达式的解决方案:
bad = set(['abc', 'qwe'])
with open('a', 'r') as f:
data = [line.strip() for line in f if line.split('@')[1].split('.')[0] in bad]
关于python - 从列表中删除正则表达式元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11339487/