在python中读取多行字符串
我需要解析一个字符串并从中读取特定的子字符串。我需要解析的字符串如下所示:在python中读取多行字符串,python,Python,我需要解析一个字符串并从中读取特定的子字符串。我需要解析的字符串如下所示: domain ( (device (console (xxxxxx) (XXXXXX) ) ) ) domain ( (device (vfb (xxxxxx) (location : 5903)
domain
(
(device
(console
(xxxxxx)
(XXXXXX)
)
)
)
domain
(
(device
(vfb
(xxxxxx)
(location : 5903)
)
)
)
这只是一个示例字符串。实际字符串可能包含许多这样的子字符串。
我需要从“vfb”子字符串中获取location字段的值。我尝试了findall和search函数,如下所示
import re
text=re.search('(device(vfb(.*?)))',stringname)
及
但我总是得到空字符串。
有没有一个简单的方法可以做到这一点?谢谢为什么不直接查找
位置
键值对呢
>>> re.findall(r'(\w+) : (\w+)', s)
[('location', '5903')]
简单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()
在
(设备
和(vfb
)之间有一条新行,您将忽略它,后面也是一样。虽然这种格式很可怕,但“右”解决方案是为它编写一个解析器,并可能将它转换为一些不太特别的东西,如JSON。这似乎是最简单的方法。但不幸的是,这似乎不是正确的正则表达式。我试图修改它,但仍然不起作用,但我运行得很好,我的python是2.7!因为可能有多个子字符串但我要在“vfb”标题下的那个
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()
re.findall(r'device.*?\(vfb.*\(.*\).*(\(.*?\))', s, re.DOTALL)