我有一个字符串(ope_sys),我想从一个词典中猜出我使用键的字符串(现在这些键只是示例):
ope_sys = linux-2.6.32-312-ec2-x86_64-with-debian-6.0.8
def check_os_family(ope_sys):
inventory_family = {
"macos": ["macos"],
"linux": ["linux", "with"],
"windows": ["windows"]
}
for key in inventory_family:
for i in inventory_family[key]:
if re.search(i, ope_sys)
name = key
return name
问题我不知道如果在循环遍历字典中的列表后如何完成最后完成,有什么方法可以说:
如果所有if都是true name = key
还有其他方法可以做到这一点,我打开以更改我的所有代码。 谢谢!
答案 0 :(得分:2)
而不是模式匹配,只需使用Python给你的东西:platform.system()
将返回类似" Windows"," Linux"," Darwin&#34 ; (适用于Mac OS)等。
答案 1 :(得分:1)
for key, value in inventory_family.iteritems():
if all(v in ope_sys for v in value):
return key
答案 2 :(得分:1)
正则表达式是一种很好的方法,只要您的匹配规则很简单。
请注意,在您的代码中,您可能会在返回 name 时收到错误,因为如果没有关键字匹配,则可能未定义。
import re
def check_system(ope_sys):
system_keywords = {
"macos": ["macos"],
"linux": ["linux", "with"],
"windows": ["windows"],
}
for system, keywords in system_keywords.items():
if all(re.search(kw, ope_sys) for kw in keywords):
return system
return None
check_system("linux-2.6.32-312-ec2-x86_64-with-debian-6.0.8")