如何修改Python代码实现在txt文件中匹配含空格的指定字符串?
Python多关键词匹配含空格字符串修正方案
问题原因
原有代码将每行内容按空格拆分后做集合交集匹配,而PASSED WITH WARNINGS这类包含空格的目标字符串会被拆分为多个独立单词,无法和列表中的完整字符串匹配,因此会遗漏对应结果。
修正方案
基础版(通用场景,无需关注行格式)
直接遍历目标关键词判断是否存在于当前行中即可,无需拆分内容:
# 你的目标匹配列表,若原代码中变量名为msgs,替换下面的lst为msgs即可 lst = ['PASSED', 'FAILED', 'PASSED WITH WARNINGS'] for file_path in tab: with open(file_path, 'r', encoding='utf-8') as infile: lines = infile.readlines() # any()做短路匹配,效率更高,rstrip('\n')可去掉每行末尾的换行符,不需要可以删除 var = [line.rstrip('\n') for line in lines if any(keyword in line for keyword in lst)] print(f"文件{file_path}匹配结果:", var)
精确匹配版(适配你提供的日志格式)
如果你使用的txt是固定的「时间戳+多空白符+状态」格式,可以只匹配行尾的状态字段,避免内容中偶然出现关键词片段导致误判:
lst = ['PASSED', 'FAILED', 'PASSED WITH WARNINGS'] keyword_set = set(lst) for file_path in tab: with open(file_path, 'r', encoding='utf-8') as infile: lines = infile.readlines() var = [] for line in lines: # 最多按空白符拆分1次,只取后半部分的状态内容匹配 parts = line.split(maxsplit=1) if len(parts) >= 2 and parts[1].strip() in keyword_set: var.append(line.rstrip('\n')) print(f"文件{file_path}匹配结果:", var)
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

