Python和正则表达式具有特殊字符

时间:2014-05-13 04:45:02

标签: regex

我无法让我的正则表达式在我的Python 3代码中按预期工作。

我正在尝试解析一个文件,找到一个特定的模式(确切的模式是Total Optimized)

我这样做是因为该文件可以包含说“”“Total Optimization(Active)”“”和其他排列的行。我试过以下几行。没有工作

PkOp = re.compile(r'Total Optimized\t\d')
PkOp = re.compile(r'Total Optimized\t\d')
PkOp = re.compile(r'Total Optimized\t[^(Active)]')

我的基本代码(此处简化)只打印匹配的行。如果我开始工作,我会选择我想要的数组项目,如

PkOp = PkOpArray[4]

App = re.compile(r'Appliance\s(Active)')
PkOp = re.compile(r"Total Optimized\t\d")
with open("SteelheadMetric2.txt","r") as f:
    with open("mydumbfile.txt","w") as o:
       for line in f:
          line = line.lstrip()
          matches = PkOp.findall(line)
          for firestick in matches:
                 PkOpArray = line.split()
                 PkOp = PkOpArray
                 print(PkOp)

主要是我收到此错误

matches = PkOp.findall(line)
AttributeError: 'list' object has no attribute 'findall'

如果我删除斜线字符,我可以使用“总计优化”或“设备”来显示线条。我只是不能更具体地说明我想要的东西。

我错过了什么?如果我只是编译一个文本字符串,但使用像空格一样的特殊正则表达式,它的工作正常,它会失败。正则表达式在notepad ++中检出

1 个答案:

答案 0 :(得分:1)

当您撰写PkOp = PkOpArray时,您刚刚将正则表达式更改为list

如果您删除该行,并将print(PkOp)更改为print(PkOpArray),则应该解决您的问题,假设其余代码正确无误。