簡體   English   中英

在字符串中找到東西,然后在python中打印

[英]find something in a string then print it in python

我確定這很簡單,但是我不能使用正則表達式或字符串操作,我想學習:)

我從使用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,但我想將其付諸實踐以達到有用的目的。

您所需要的只是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]

每當您要打印時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM