首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字符串中找到一些东西,然后用python打印出来。

在字符串中找到一些东西,然后用python打印出来。
EN

Stack Overflow用户
提问于 2014-12-05 17:19:55
回答 2查看 146关注 0票数 0

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

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

代码语言:javascript
复制
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,但当我试图验证固件版本时,我变得很草率。

代码语言:javascript
复制
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,但我想实践的有用的目的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-05 17:36:42

您所需要的只是split(),您可以使用一个特殊字符拆分您的字符串--例如,请参阅以下内容:

代码语言:javascript
复制
>>> 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']

因此,您可以轻松地通过索引获得第二个元素!

票数 0
EN

Stack Overflow用户

发布于 2014-12-05 17:45:00

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

首先,我注意到您字符串的信息被分号细分.因此:

代码语言:javascript
复制
description_list = sysdesc.split(";")

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

代码语言:javascript
复制
sub_string = description_list[3]

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

代码语言:javascript
复制
revision_list = sub_string.split(":")

现在,只需参考:

代码语言:javascript
复制
revision_list[1]

只要你想打印它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27321355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档