【问题标题】:Using regex pattern stocked in file使用文件中存储的正则表达式模式
【发布时间】:2014-05-30 11:24:58
【问题描述】:

我正在编写一个简单的 Python 脚本,该脚本查看输入文件的任何行是否与 CSV 文件中的任何模式匹配。

以下代码不显示任何内容:

# -*- coding: utf8 -*-
import re
import csv

csvfile = open('errors.csv', 'r')
errorsreader = csv.reader(csvfile, delimiter="\t")


log = open('gcc.log', 'r')

for line in log:
    for row in errorsreader:
        matchObj = re.match(row[0],line)
        if matchObj:
            print (line)

虽然代码相同,但使用以下模式而不是 row[0] 有效:

.* error: expected ‘;’ before ‘}’ token  .*

我一直在寻找解决方法,但它们似乎都不起作用。有什么猜测吗?

【问题讨论】:

  • csvfile 用于读取像“1,'a,b'”这样的行,其中字段之间的分隔符也出现在字段中,并被引用。将您的模式放入(例如)patterns.txt 中,每行一个模式。然后用“patterns = list(open('patterns.txt'))”读入它们并用“for pattern in patterns:”迭代。

标签: python regex python-3.x


【解决方案1】:

问题在于,在日志的第一行,您将从 errorsreader 中读取所有行,然后您将什么也读不到。你可以改变

errorsreader = csv.reader(csvfile, delimiter="\t")

errorsreader = list(csv.reader(csvfile, delimiter="\t"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-31
    • 2011-09-15
    • 2012-02-12
    • 2011-02-20
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    相关资源
    最近更新 更多