Python -搜索文本,复制部分行



所以我有一个文本文件(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给出()组。

最新更新