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

新手上路,请多包涵

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

 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 许可协议

阅读 365
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 许可协议

推荐问题