簡體   English   中英

檢查字典是否包含命令輸出中的某個字符串

[英]Check if dictionary contains a certain string from command output

我是學習 python 和 pexpect 的新手,我正在嘗試檢查字典是否包含來自某些命令輸出的某個字符串,但我遇到了問題。

假設我向我的終端發送了一些名為“list”的命令,它會輸出某個產品的詳細信息:

->list
Color: Maroon Red
Height: 150cm
Code: 4KG-LV
Material: Aluminum
Brand: Toyota 
#and hundreds of more lines...

我有一個代表字典的變量,當我使用'print(license_type)'打印它時輸出它:

{'license': '4kg-lv'}

我基本上想檢查 list 命令輸出中的代碼“4KG-LV”是否等於字典中許可證中的值“4kg-lv”。

這樣做:

exp.sendline("list")
exp.expect('(?<=Code:\s).*(?=[\r\n])')
firstString = exp.after
print(firstString) 

使用正則表達式解析 list 命令的輸出並獲取/打印值 4KG-LV。 我可以確認這有效。

如果我將所有這些放在一個 python 腳本中並檢查兩個值是否相等(忽略大寫),它應該通過檢查。 但是,當我嘗試檢查第一個字符串(list 命令中的代碼)是否在字典中時,它輸出“NOT EQUAL”

exp.sendline("list")
exp.expect('(?<=Code:\s).*(?=[\r\n])')
firstString = exp.after

# convert dictionary to string
secondString = str(license_type)

if firstString.lower() in secondString.lower()
    print("EQUAL")
else:
    print("NOT EQUAL")

我不允許更改字典中內容的鍵名/大寫。 我嘗試將字典轉換為字符串,並使用 .lower() 將兩個字符串轉換為小寫。 我不確定我做錯了什么,希望得到任何幫助或參考。

無需將字典轉換為字符串,只需訪問密鑰license的值並將其轉換為小寫字符串並檢查firstString是否相等。 我假設您使用的正則表達式是正確的。

license_type = {'license': '4kg-lv'}
exp.sendline("list")
exp.expect('(?<=Code:\s).*(?=[\r\n])')
firstString = exp.after

if firstString.lower() == license_type.get("license").lower():
    print("EQUAL")
else:
    print("NOT EQUAL")

我在 iPython shell 中對其進行了測試,因此它應該可以工作:

In [3]: "4KG-LV".lower() == license_type.get("license").lower()
Out[3]: True

暫無
暫無

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

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