我确信这很简单,但我不擅长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>>我想要能够查看该字符串,并使用该信息,如果然后打印一些东西。我想看看模型是否是一个CM820A,然后检查固件版本SW_REV,如果它不是正确的版本,我想打印版本,否则,我将转到我从循环中得到的下一个字符串。
返回上述字符串的host.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,但我想实践的有用的目的。
发布于 2014-12-05 17:36:42
您所需要的只是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']因此,您可以轻松地通过索引获得第二个元素!
发布于 2014-12-05 17:45:00
这个答案将简单地解释如何检索您想要的信息。您需要对数据执行多个拆分。
首先,我注意到您字符串的信息被分号细分.因此:
description_list = sysdesc.split(";")将创建一个主要部分的列表。由于sysdesc字符串具有标准格式,因此可以访问正确的子字符串:
sub_string = description_list[3]现在,用冒号拆分子字符串:
revision_list = sub_string.split(":")现在,只需参考:
revision_list[1]只要你想打印它。
https://stackoverflow.com/questions/27321355
复制相似问题