我是Python新手。我想知道从文本文件中的字段中提取数据的最佳方法是什么?
我的文本文件保存网络信息。它看起来像这样:
Name: Machine_1 Status: On IP:10.0.0.1
Name: Machine_2 Status: On IP:10.0.0.2
Network_name: Private Router_name: router1 Router_ID=3568
Subnet: Tenant A
文件结构不是很好。由于行的非同质性,它甚至不能表示为CSV文件,即它们都没有相同的列标识符。
我想要做的是能够获得我想要的任何字段的值,例如Router_ID与
请帮我找到解决方案。
感谢。
答案 0 :(得分:1)
您可以使用正则表达式扫描您的文件。您必须为要提取的每个字段定义正则表达式。例如:
import re
data = """Name: Machine_1 Status: On IP:10.0.0.1
Name: Machine_2 Status: On IP:10.0.0.2
Network_name: Private Router_name: router1 Router_ID=3568
Subnet: Tenant A"""
for line in data.split('\n'):
ip = re.match('.*IP:(\d+.\d+.\d+.\d+)', line)
rname = re.match('.*Router_name: (\w+)', line)
if ip and ip.lastindex > 0:
print(ip.group(1))
if rname and rname.lastindex > 0:
print(rname.group(1))
输出:
10.0.0.1
10.0.0.2
router1