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

时间:2016-01-07 16:39:55

标签: python loops for-loop

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

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循环呢?

3 个答案:

答案 0 :(得分:9)

您可以使用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']

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

像这样(不使用正则表达式,这是另一种选择)

matches = []
for file in list:
    if file.startswith(dt) and '.txt' == file[-4:]: matches.append(file)

print (matches)