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
好的。。。看来你找到答案了