检查字典是否包含命令输出中的某个字符串
Check if dictionary contains a certain string from command output
我是学习 python 和预期的新手,我正在尝试检查字典是否包含来自某些命令输出的特定字符串,但我遇到了麻烦。
假设我向我的终端发送了一些名为“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'}
我基本上想检查列表命令输出中的代码“4KG-LV”是否等于字典中许可证中的值“4kg-lv”。
这样做:
exp.sendline("list")
exp.expect('(?<=Code:\s).*(?=[\r\n])')
firstString = exp.after
print(firstString)
使用正则表达式和 gets/prints 值 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")
不允许我更改字典中内容的关键字 names/capitalization。我尝试将字典转换为字符串,还使用 .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
我是学习 python 和预期的新手,我正在尝试检查字典是否包含来自某些命令输出的特定字符串,但我遇到了麻烦。
假设我向我的终端发送了一些名为“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'}
我基本上想检查列表命令输出中的代码“4KG-LV”是否等于字典中许可证中的值“4kg-lv”。
这样做:
exp.sendline("list")
exp.expect('(?<=Code:\s).*(?=[\r\n])')
firstString = exp.after
print(firstString)
使用正则表达式和 gets/prints 值 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")
不允许我更改字典中内容的关键字 names/capitalization。我尝试将字典转换为字符串,还使用 .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