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

从TXT读取正则表达式作为变量匹配失败问题排查

问题原因及解决方案

核心原因

读取list_pattern.txt每行时,每行末尾会自带换行符\n。比如第一行实际读取到的内容是"Battery Low\n",而非你预期的"Battery Low",用这个带换行的字符串去匹配日志行,自然找不到结果——因为日志里的行不会以这个带换行的字符串结尾。

解决方法

在使用读取到的模式前,去除末尾的换行符(或按需处理首尾空白):

with open(r"C:\Desktop\list_pattern.txt", "r") as file1:
    for pattern in file1:
        # 只去除末尾换行符,保留模式本身的前后空格
        cleaned_pattern = pattern.rstrip('\n')
        # 如果模式本身不需要首尾空格,也可以用strip()
        # cleaned_pattern = pattern.strip()
        with open(r'C:\Desktop\log.txt',"r") as my_file:
            for lines in my_file:
                k = re.search(cleaned_pattern, lines)
                if k:
                    print("k is", k)

额外优化建议

你的代码每次处理一个模式就重新打开一次log.txt,对于超大日志文件来说效率极低。建议调整为只打开一次日志文件,循环处理所有模式:

# 先读取并预处理所有模式
patterns = []
with open(r"C:\Desktop\list_pattern.txt", "r") as file1:
    for pattern in file1:
        patterns.append(pattern.rstrip('\n'))

# 仅打开一次日志文件,遍历每行匹配所有模式
with open(r'C:\Desktop\log.txt',"r") as my_file:
    for line in my_file:
        for p in patterns:
            k = re.search(p, line)
            if k:
                print(f"匹配到模式{p}: {k}")

内容的提问来源于stack exchange,提问作者mrin9san

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:26:27