qq_36845718
Halo-Z
2020-11-05 22:23
采纳率: 33.3%
浏览 21

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条回答 默认 最新

  • qqzhuimengren
    PythonJavaC++go 2020-11-06 01:26
    已采纳

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

    循环结束了再统一处理

    点赞 评论

相关推荐