python - 从列表中删除正则表达式元素

标签 python regex list parsing

我使用 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/

相关文章:

python - 如何在 Python 中使用正则表达式从 url 中提取特定模式?

python - 在 Python 中重试 for 循环

c++ - gcc 4.8 或更早版本对正则表达式有问题吗?

c# - 拆分字符串并忽略引号内的定界符

python - 用 Pandas DataFrame 中出现频率最高的单词替换单元格

python - 对字符串列表进行排序

Python for for循环优化

python - 在自定义类型映射中重用 SWIG 映射

python - 将父标记内的 XML 节点值与作为列表中元素的元组序列进行比较

C# 从 List<List<int>> 中删除重复项