所以我有一个文本文件(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:后面的内容复制到一个单独的字符串中,就是另一回事了。
只是为了提供不同的解决方案,您可以将行拆分为键/值对并填充字典:
conf = dict()
for line in open("test.txt"):
key, value = line.rstrip().split(": ", 1)
conf[key] = value
print conf["Site"]
我认为你需要
print re.search(r"Site:s*(.*)", alarm).group(1)
正则表达式有特殊的语法。简而言之,您正在寻找
re.findall(r"^Site:s*(.*)$", alarm, re.MULTILINE)
但你也可以这样做
m = re.search(r"^Site:s*(.*)$", alarm, re.MULTILINE)
,然后继续例如m.group(1)
。
为什么要这样?
-
r""
将字符串转换为原始字符串,从而保留所有并将其提供给
re
引擎。 - RE本身:
^
是字符串或行开始,s*
是空白(空白,制表符等)的可选序列,()
是一个捕获组,.*
是"一切",$
是行或字符串结束。 -
re.MULTILINE
用于识别字符串中的行。 -
m.group
给出()
组。