在Python中只需要在

2024-06-01 07:36:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我从HP设备获取信息并将其存储在名为data的变量中。在

现在,我只想从输出中提取Chassis:和{}的值,示例如下(我通过键入命令show module获得):

============================
coaza077-cor-01> show module

 Status and Counters - Module Information
  Chassis: 2900-24G J9049A         Serial Number:   SG748KI09F
  Slot  Module Description                       Serial Number
  ----- ---------------------------------------- --------------

coaza077-cor-01> exit
Do you want to log out [y/n]? y
=============================

下面的代码是我的尝试:

^{pr2}$

。。然而,我似乎不能得到我需要的两个值。我是Python新手,甚至不确定我是否正确地处理了这个问题。在

我怎样才能得到我需要的田地?在


Tags: and命令示例numberdata键入statusshow
3条回答

前几件事。在

为什么首先将数据拆分成行,然后将它们连接成字符串?你的迭代通过每个符号,而不是每个字母。在

什么是“解析”?如果需要帮助,请粘贴所有需要的代码。在

sList[i].lower()).find('Chassis')您希望如何在所有降低的文本中找到单词“Chasis”?记住,这个发现不是大小写无关的。在

更像Python:

for line in data.splitlines():
    if "Chassis" in line:
        print line
        #DEVICE PROCESSOR
        #device_processor= _parse.getdata(sList[i].lower(), 'Chassis:', ' ')
        #if debugging == "_HP2900" or debugging == "ALL": print "_HP2900.py", "Processor", device_processor          

    if 'Serial Number' in line:
        print line
        #DEVICE SERIAL NUMBER
        #device_serial= (_parse.serial_number(sList[i].lower()[len('Serial Number'):])).upper()
        #if debugging == "_HP2900" or debugging == "ALL": print "_HP2900.py", "Serial", device_serial  

数据就是你的全部文本。试着多读一些关于Python的方法的书,让你的生活更轻松;)

脚本现在要做的是找到正确的行。当你写下_parse是什么的时候,我可以给这个答案加上更多的东西。在

因为您首先将当前行更新为小写,然后尝试查找混合了大写/小写的字符串,所以它不起作用。所以您只需要删除.lower()。在

试试这个:

for row in (line.strip() for line in data.split('\n') if line.strip()):

    rData = row.split() # just for sample

    if 'Chassis' in row:
        #DEVICE PROCESSOR
        chassisInd = rData.index('Chassis:')
        if chassisInd + 1 < len(rData):
            print 'Chassis:', rData[chassisInd + 1]

    if 'Serial Number' in row:
        serialInd = rData.index('Serial Number:')
        if serialInd + 1 < len(rData):
            print 'Serial Number:', rData[serialInd + 1]
>>> data = """
============================
coaza077-cor-01> show module

 Status and Counters - Module Information
  Chassis: 2900-24G J9049A         Serial Number:   SG748KI09F
  Slot  Module Description                       Serial Number
    -                             

coaza077-cor-01> exit
Do you want to log out [y/n]? y
=============================
"""
>>> chasis = data.split('Chassis:')[1].split('Serial')[0].strip()
>>> serial = data.split('Serial Number:')[1].split()[0].strip()
>>> 
>>> print chasis
2900-24G J9049A
>>> print serial
SG748KI09F

评论更新:

^{pr2}$

相关问题 更多 >