Python正则表达式:使用re.findall迭代字符串列表

Python正则表达式:使用re.findall迭代字符串列表,python,regex,Python,Regex,我有一个列表,它只是一个文件名列表 ['20190918_TrialBalance_TPBL.txt','20190918_ManagerBalance_TPCL.txt','20190918_ManagerBalance_TPCH.txt'] 目标: 我想知道列表中是否包含名称包含“TrialBalance”的文件 我的方法: 我正在尝试使用regex遍历该列表 import re files=[] for f in list_files: tbl = re.findall(r'tr

我有一个列表,它只是一个文件名列表

['20190918_TrialBalance_TPBL.txt','20190918_ManagerBalance_TPCL.txt','20190918_ManagerBalance_TPCH.txt']
目标:

我想知道列表中是否包含名称包含“TrialBalance”的文件

我的方法:

我正在尝试使用
regex
遍历该列表

import re
files=[]
for f in list_files:
    tbl = re.findall(r'trial.*\.txt$',f, re.IGNORECASE)
    files.append(tbl)
上述代码不会产生任何结果,即我得到一个空白列表

但是,当我对单个项目应用
re.findall
时,即
re.findall(r'trial.*\.txt$,list_files[0],re.IGNORECASE)
我得到了正确的答案

谁能帮我指出那条缺的线吗

这更简单:

文件=[]
对于列表_文件中的f:
如果f中的“TrialBalance”:
文件。追加(f)

使用
re.findall
低效的对于您的情况,使用以下方法准备好正则表达式模式和
re.search
功能:

import re

list_files = ['20190918_TrialBalance_TPBL.txt', '20190918_ManagerBalance_TPCL.txt', '20190918_ManagerBalance_TPCH.txt']
pat = re.compile(r'trial.*\.txt$', re.I)
trial_files = [f for f in list_files if pat.search(f)]

print(trial_files)  # ['20190918_TrialBalance_TPBL.txt']

非正则表达式方法也是可行的:

list_files = ['20190918_TrialBalance_TPBL.txt', '20190918_ManagerBalance_TPCL.txt', '20190918_ManagerBalance_TPCH.txt']
trial_files = []
for f in list_files:
    f_ = f.lower()
    if 'trial' in f_ and f_.endswith('.txt'):
        trial_files.append(f)

print(trial_files)

any([如果i中的'TrialBalance'对列表文件中的i为真])
您的实际列表是否可能包含\r`行结尾?我知道这种方法。只是想看看我是否可以使用
regex
好的。。。看来你找到答案了