在字符串中找到一些内容,然后用python打印出来

2024-04-19 07:51:19 发布

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

我确信这很简单,但我不擅长regexp或字符串操作,我想学习:)

我有一个使用snimpy得到的字符串的输出。看起来是这样的:

ARRIS DOCSIS 3.0 Touchstone WideBand Cable Modem <<HW_REV: 1; VENDOR: Arris Interactive, L.L.C.; BOOTR: 1.2.1.62; SW_REV: 7.3.123; MODEL: CM820A>>

我希望能够查到字符串,并在if中使用这些信息,然后打印一些东西。我想看看型号是否是CM820A,然后检查固件版本SW\u REV,如果不是正确的版本,我想打印版本,否则我将转到从循环中获得的下一个字符串。
主机.sysDescr它返回上面的字符串。到现在为止,我知道如何找到所有的CM820A,但后来我得到草率当我试图验证固件版本。你知道吗

sysdesc = host.sysDescr
if "CM820A" in str(sysdesc):        
    if "7.5.125" not in str(sysdesc):
        print("Modem CM820A " + modem + " at version " + version)
        print(" Sysdesc = " + sysdesc)
    if "7.5.125" in sysdesc:
        print ("Modem CM820A " + modem + " up to date")

现在我可以很容易地看到CM820A是否有正确的版本,但我不能只打印坏调制解调器的版本。我只能打印整个字符串,其中包含了很多无用的信息。我只想打印字符串的SW_REV值。你知道吗

问题

我需要帮助如何做到这一点,然后我会更好地理解,并能够重写这整件事,我目前正在使用的只是学习python,但我想付诸实践,为有用的目的。你知道吗


Tags: 字符串in版本信息ifrevsw固件
2条回答

您只需要split(),就可以用一个特殊字符分割字符串,例如,请参见以下内容:

>>> l= s.split(';')
['ARRIS DOCSIS 3.0 Touchstone WideBand Cable Modem <<HW_REV: 1', ' VENDOR: Arris Interactive, L.L.C.', ' BOOTR: 1.2.1.62', ' SW_REV: 7.3.123', ' MODEL: CM820A>>']

>>> for i in l :
...  if 'BOOTR' in i:
...   print i.split(':')
... 
[' BOOTR', ' 1.2.1.62']

这样,您就可以通过索引轻松获得第二个元素!你知道吗

这个答案将简单地解释如何检索所需的信息。 您需要对数据执行多个拆分。你知道吗

首先,我注意到字符串的信息被分号细分。 所以:

description_list = sysdesc.split(";")

将创建一个主要部分的列表。由于sysdesc字符串具有标准格式,因此可以访问适当的子字符串:

sub_string = description_list[3]

现在,用冒号拆分子字符串:

revision_list = sub_string.split(":")

现在,请参考:

revision_list[1]

只要你想打印它。你知道吗

相关问题 更多 >