因此,我有一个文本文件(alarm.txt),我将其转换为字符串。alarm.txt文件包含:
Customer Name: LOU
Site: Sao Paulo
Node Name: SPRouter
IP address: 1.2.3.4
我使用read()打开它。我已经尝试过readline(),但它似乎并不能很好地工作:
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:之后的内容复制到一个单独的字符串中,就是另一回事了。
发布于 2011-12-03 15:25:04
我觉得你需要
print re.search(r"Site:\s*(.*)", alarm).group(1)
发布于 2011-12-03 15:58:33
为了提供不同的解决方案,您可以将行拆分为键/值对并填充字典:
conf = dict()
for line in open("test.txt"):
key, value = line.rstrip().split(": ", 1)
conf[key] = value
print conf["Site"]
发布于 2011-12-03 15:27:10
正则表达式有特殊的语法。简而言之,您正在寻找
re.findall(r"^Site:\s*(.*)$", alarm, re.MULTILINE)
但是你也可以这样做
m = re.search(r"^Site:\s*(.*)$", alarm, re.MULTILINE)
然后继续,例如m.group(1)
。
为什么是这一切?
r""
将字符串转换为原始字符串,以便保留所有代码并将其提供给re
引擎。^
是字符串或行的开头,\s*
是可选的空格序列(空格、制表符等),()
是捕获组,.*
是"everything“,$
是行尾,或者string.re.MULTILINE
是用于识别string.m.group
中的行的组。<代码>H222<代码>F223https://stackoverflow.com/questions/8368623
复制相似问题