You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:39:04