Halo-Z 2020-11-05 22:23 采纳率: 50%
浏览 46
已采纳

python2 正则匹配list元素,最后一个元素丢失的问题

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环境下,上面这个代码始终无法处理超过最后面这个非ok的元素,在第二个循环中也无法打印出来。

我是想把所有非ok结尾的文件全部remove。但是列表最后有超过两个非ok的元素,就会导致最后的那个元素神秘消失。

有知道的大佬,能帮忙看看是什么原因吗?

最好不是

  • 写回答

1条回答 默认 最新

  • PythonJavaC++go 2020-11-06 01:26
    关注

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

    循环结束了再统一处理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?