Python正则表达式未给出预期的结果

2024-10-04 05:20:59 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试在python 2.5.4中对列表执行正则表达式搜索-示例代码:

import re

list_in = ['heti_abcd_xyz_1234', 'heti_abcd_xyz', 'heti_abcd']

en = re.compile('abcd_xyz_1234$')

for item in list_in:
    if en.search(item) is None:
        list_in.remove(item)
print list_in

但是我得到的结果是:

^{pr2}$

当我只期待第一个元素。

非常感谢你的任何建议。


Tags: 代码inimportre示例列表forif
3条回答

迭代列表时不能修改列表。只需创建一个新的:

import re
list_in = ['heti_abcd_xyz_1234', 'heti_abcd_xyz', 'heti_abcd']
en = re.compile('abcd_xyz_1234$')
new_list = [item for item in list_in if en.search(item) is not None]
print new_list

顺便说一句,使用^{}而不是正则表达式,除非代码中的正则表达式只是更复杂事物的示例。在

当你迭代列表时,你正在修改它。你不能那样做。在

可以简单得多:

>>> list_in = ['heti_abcd_xyz_1234', 'heti_abcd_xyz', 'heti_abcd']
>>> [x for x in list_in if x.endswith("abcd_xyz_1234")]
['heti_abcd_xyz_1234']

如果您想要一个适用于任意正则表达式的解决方案,可以执行以下操作:

^{pr2}$

相关问题 更多 >