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

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) 不要一边循环一边移除,先定位了所有要删除的元素

    循环结束了再统一处理

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

报告相同问题?

悬赏问题

  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作