我有一个格式如下的文件:
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
由于
答案 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