Python正则表达式找到了意想不到的输出

时间:2015-04-02 14:39:45

标签: python regex python-2.7

我正在使用Python 2.7来读取文件,我希望在文件内容上使用正则表达式来提取某些信息。然而,我目前的正则表达式包括我似乎无法摆脱的额外数据。

for event in reader:
    #print(event)
    strevent = str(event)
    print re.findall(r"protocol':(.*?),", strevent)

以上代码有效, re.findall 命令的输出为:

[' 6']

但我正在寻找输出只是 6

这是我正在阅读的文件内容的片段

["{'protocol': 6", " 'dport-icode': 80", " 'signature-id': 15", " 'mpls-    label': None",
 " 'sensor-id': 0", " 'impact-flag': 0""]

目的是提取识别标签之间的数据并将其粘贴到变量中,然后再进行操作。

非常感谢正则表达式代码的任何改进。感谢。

1 个答案:

答案 0 :(得分:1)

  1. 为您的模式添加空间

    print re.findall(r"protocol': (.*?),", strevent)
    
  2. 从结果

    中修剪空白区域
    result = re.findall(r"protocol': (.*?),", strevent)
    print [ r.strip() for r in result ]
    
  3. 为什么不尝试将数据作为json对象加载到对象?这种情况可能要容易得多。 python json library