我有一个文本文件(alarm.txt),我将其转换为字符串。 alarm.txt文件包含:
Customer Name: LOU
Site: Sao Paulo
Node Name: SPRouter
IP address: 1.2.3.4
我用read()打开它。我已经尝试过readlines(),但这似乎不起作用:
alarm = open('alarm.txt').read()
所以现在我正在尝试搜索“Site:”并在Site之后复制文本:直到行尾(在本例中我想将“Sao Paulo”复制到一个新字符串中)。
我已经尝试过re.findall,re.match,re.search。
print re.search(r"Site:*\n", alarm)
我希望上面的代码能够在字符串中搜索Site:并打印“Site:Sao Paulo”这一行但是它有错误。然后将Site:之后的内容复制成一个单独的字符串,这是另一个故事。
答案 0 :(得分:3)
只是提供不同的解决方案,您可以将行拆分为键/值对并填充字典:
conf = dict()
for line in open("test.txt"):
key, value = line.rstrip().split(": ", 1)
conf[key] = value
print conf["Site"]
答案 1 :(得分:2)
我认为你需要
print re.search(r"Site:\s*(.*)", alarm).group(1)
答案 2 :(得分:2)
正则表达式具有特殊语法。简而言之,您正在寻找
re.findall(r"^Site:\s*(.*)$", alarm, re.MULTILINE)
但你也可以这样做
m = re.search(r"^Site:\s*(.*)$", alarm, re.MULTILINE)
然后继续例如m.group(1)
。
为什么这一切?
r""
将字符串转换为原始字符串,以便保留所有\
并将其提供给re
引擎。^
是字符串或行的开头,\s*
是一个可选的空格序列(空格,制表符等),()
是一个捕获组,{{ 1}}是“所有”,.*
是行尾或字符串。$
用于识别字符串中的行。re.MULTILINE
为您提供了m.group
个群组。