在python中读取多行字符串

时间:2012-12-26 07:08:43

标签: python

我需要解析一个字符串并从中读取一个特定的子字符串。我需要解析的字符串如下:

domain
(
    (device
          (console
               (xxxxxx)
               (XXXXXX)
          )
    )
)

domain
(
    (device
          (vfb
               (xxxxxx)
               (location : 5903)
          )
    )
)

这只是一个示例字符串。实际的字符串可能包含许多这样的子字符串。 我需要从“vfb”子字符串中获取位置字段的值。我尝试了findall和搜索功能如下

import re
text=re.search('(device(vfb(.*?)))',stringname)

import re
text=re.findall('(device(vfb(.*?)))',stringname,re.DOTALL)

但我总是得到空字符串。 有一个简单的方法来做到这一点?感谢

3 个答案:

答案 0 :(得分:1)

为什么不只查找location键值对?

>>> re.findall(r'(\w+) : (\w+)', s)
    [('location', '5903')]

答案 1 :(得分:0)

简单的python脚本:

fp = open("input.txt", "r")

data = fp.readlines()
for line in data:

    if "location" in line:
        print line.split(":")[1].split(")")[0].strip()

fp.close()

答案 2 :(得分:0)

re.findall(r'device.*?\(vfb.*\(.*\).*(\(.*?\))', s, re.DOTALL)