如何从python中的文件中提取特定信息

时间:2017-08-28 15:28:47

标签: python file

我有一个格式如下的文件:

device={
   id=1
   tag=10
   name=device1
}
device={
   id=2
   tag=20
   name=device2
}
device={
   id=3
   tag=30
   name=device3
}

所以,假设我只对id=2的设备感兴趣,并且我想提取其标签号(这是可配置的,将从其他代码更改)。所以我需要提取设备ID 2的标签号。我怎么能在python中做到这一点。我做了以下事情:

ID='id=2'

with open("file.txt") as file:
          for line in file:
              if line.strip() ==  ID:
                  #Here I do not know what to write 
                  # to extract 20

由于

3 个答案:

答案 0 :(得分:4)

使用re.search功能:

import re

with open('file.txt', 'r') as f:
    id_num = 'id=2'
    tag_num = re.search(r'' + id_num + '\s+tag=([0-9]+)', f.read())
    print(tag_num.group(1))

输出:

20
  • f.read() - 读取文件内容(作为文本)

  • r'' + id_num + '\s+tag=([0-9]+)' - 构建正则表达式模式,因此它将成为id=2\s+tag=([0-9]+),其中\s是一个或多个空白字符(包括换行符),([0-9]+)是第1个捕获的群组包含 标记 数字

  • tag_num.group(1) - 从match对象1

  • 中提取第一个捕获/带括号的组tag_num的值

答案 1 :(得分:3)

您可以使用line.readline()阅读下一行,尝试使用此代码:

ID='id=2'

with open("file.txt") as file:
    while True:
        line = file.readline()
        if line.strip() == ID:
            nextline = file.readline()
            result = nextline.strip().split('=')[1]
       if line == '':
            break

答案 2 :(得分:1)

with open("") as file:
    #print file.read()

    for line in file:
        #print line.split()
        if line.strip()==ID:
          d=file.next()              #reads next line
          print d.split('=')[1]
          break