我确定这很简单,但我对正则表达式或字符串操作并不好,我想学习:)
我有一个使用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_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的整个事情,但我想用于实践以实现有用的目的。
答案 0 :(得分:0)
您需要的只是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']
那么你可以通过索引轻松获得第二个元素!
答案 1 :(得分:0)
此答案将简单解释如何检索所需信息。 您需要对数据执行多次拆分。
首先,我注意到你的字符串的信息被分号细分。 这样:
description_list = sysdesc.split(";")
将创建主要部分的列表。由于sysdesc字符串具有标准格式,因此您可以访问正确的子字符串:
sub_string = description_list[3]
现在,用冒号分割子字符串:
revision_list = sub_string.split(":")
现在,只需参考:
revision_list[1]
每当你想要打印它时。