使用dictionary-keys python检查一个字符串?

时间:2014-03-16 12:14:15

标签: python python-2.7 dictionary

我有一个字符串(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

还有其他方法可以做到这一点,我打开以更改我的所有代码。 谢谢!

3 个答案:

答案 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")