Halo-Z 2020-11-06 09:27 采纳率: 50%
浏览 11

python2在使用re模块对元素进行循环筛序时,无法对最后的一个元素进行处理

import re
# r = re.compile('^\w+__.+__\d+\.ok$')

test_lst = ['test', 'public__test_t__16385.ok', 'tsdasys', 'yuyguyuyvhhj']
# test_str = 'public__test_t__16385.ok'

for t in test_lst:
    print '<>' + t

for t in test_lst:
    print '<<' + t
    # rm = re.match(r'.*ok$', t)
    if re.match('^\w+__.+__\d+\.ok$', t) is not None:
        print t + ' ok'
        continue
    test_lst.remove(t)

print test_lst

使用的是python2.7最新版本的环境,只要最后不匹配的元素超过两个,那最后一个元素就会莫名消失,这个怎么看都感觉像是bug。有大佬清楚是咋回事吗?

  • 写回答

2条回答 默认 最新

  • PythonJavaC++go 2020-11-06 10:55
    关注

    test_lst.remove(t) 不要一边循环一边移除,先定位了所有要删除的元素

    循环结束了再统一处理

    评论

报告相同问题?