为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中解析文本文件

在 Python 中解析文本文件

杨魅力 2021-09-02 20:37:36
我是 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())任何帮助,将不胜感激。
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

看来你有点快了。我建议先尝试一个中间步骤:


vlanArray = text.split(",") 

for txt in vlanArray:

    print(txt)

这应该为您提供下一步要采取的步骤的方向。


查看完整回答
反对 回复 2021-09-02
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

您可以使用正则表达式来提取您需要的信息:


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 re

m = 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


查看完整回答
反对 回复 2021-09-02
?
jeck猫

TA贡献1909条经验 获得超7个赞

不需要对相同文本进行 2 次或更多次拆分。试试下面:

  1. 对文本进行拆分并存储在数组中

  2. 通过数组运行循环

  3. 检查阵列项是否包含 Vlan 或 IP 子网

  4. 如果为真,则追加输出变量

像下面这样:

  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)  


查看完整回答
反对 回复 2021-09-02
  • 3 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信