使用通配符在列表中查找字符串

新手上路,请多包涵

我正在使用通配符在列表中查找一些文件名。

 from datetime import date
dt = str("RT" + date.today().strftime('%d%m'))
print dt # RT0701

基本上我需要找到这个模式 dt + "*.txt"

 RT0701*.txt

在此列表中:

 l = ['RT07010534.txt', 'RT07010533.txt', 'RT02010534.txt']

我怎样才能用 for 循环做到这一点?

原文由 user2990084 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 360
2 个回答

您可以为此使用 fnmatch.filter()

 import fnmatch
l = ['RT07010534.txt', 'RT07010533.txt', 'RT02010534.txt']
pattern = 'RT0701*.txt'
matching = fnmatch.filter(l, pattern)
print(matching)

输出:

 ['RT07010534.txt', 'RT07010533.txt']

原文由 Andy 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以像这样使用正则表达式:

 import re
pat = re.compile('%s.*\.txt' % dt)
for can in l:
    if(pat.search(can)):
        print can

原文由 Eric Renouf 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题