从Python中的文本文件中的字段中提取数据

时间:2014-09-13 12:50:02

标签: python field text-files extract

我是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与

请帮我找到解决方案。

感谢。

1 个答案:

答案 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