在 Python 中解析文本文件

我是 python 新手,我正在尝试从文本文件中提取值。输入:


Vlan101, Interface status: protocol-up/link-up/admin-up, iod: 257,

  IP address: 1.1.1.1, IP subnet: 1.1.1.0/24

  IP broadcast address: 255.255.255.255

输出:


Vlan101,1.1.1.0/24

我有一个有效的代码,但没有给我想要的输出。


我的代码:


 if 'Vlan' in text:

            vlanArray = text.split(",")

            print(vlanArray[0])

        if 'IP subnet' in text:

            ipAddress = text.split(":")

            lenipAdd = len(ipAddress)

            print(ipAddress[lenipAdd-1].strip())

任何帮助,将不胜感激。


杨魅力
浏览 180回答 3
3回答

慕桂英3389331

看来你有点快了。我建议先尝试一个中间步骤:vlanArray = text.split(",") for txt in vlanArray:    print(txt)这应该为您提供下一步要采取的步骤的方向。

缥缈止盈

您可以使用正则表达式来提取您需要的信息:s = """Vlan101, Interface status: protocol-up/link-up/admin-up, iod: 257,  IP address: 1.1.1.1, IP subnet: 1.1.1.0/24  IP broadcast address: 255.255.255.255"""import rem = re.match(r'^([\d\w]+)(.*)(IP subnet: )([0-9./]+)', s, re.DOTALL | re.S | re.MULTILINE )result = m.groups()print (result[0], result[-1])返回:Vlan101 1.1.1.0/24

jeck猫

不需要对相同文本进行 2 次或更多次拆分。试试下面:对文本进行拆分并存储在数组中通过数组运行循环检查阵列项是否包含 Vlan 或 IP 子网如果为真,则追加输出变量像下面这样:  vlanArray = text.split(",")   outTxt = []   for subTxt in vlanArray:      if 'Vlan' in subTxt:          outTxt.append(subTxt)      if 'IP subnet' in subTxt:          ipAddress = subTxt.split(":")          lenipAdd = len(ipAddress)          outTxt.append(ipAddress[lenipAdd-1].strip())    outTxt = ','.join(outTxt)  
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python