如何在python中执行不区分大小写的开关

时间:2018-11-24 00:21:10

标签: python

我是Python的新手,正在尝试进行不区分大小写的匹配,如果可能的话,还要应用正则表达式,以便任何包含搜索词的句子都可以检索结果。

当前的“开关”:

def movement(i):
    switcher = {
        'Automatik': 6,
        'Handaufzug': 12}
    return switcher.get(i, "Invalid movement " + i)

watch['movement'] = movement(value)

在以下所有情况下,该方法均应返回6:

  • 自动机
  • 自动机
  • 自动绕线
  • 绕线自动机
  • ...

Python可以做到吗?

2 个答案:

答案 0 :(得分:1)

与菠萝的略有不同:

def movement(my_string):
    switcher={
        'automatik' : 6,
        'handaufzug' : 12
     }
    for k, v in switcher.items():
        if k in my_string.lower():
            return v
    return None


for phrase in ['Automatik','automatik','Automatik Winding','Winding Automatik','negative automatico']:
    print('in:{} \tout:{}'.format(phrase,movement(phrase)))

in:Automatik    out:6
in:automatik    out:6
in:Automatik Winding    out:6
in:Winding Automatik    out:6
in:negative automatico  out:None

答案 1 :(得分:0)

假设我是一个字符串,您应该能够执行以下操作。虽然它不是最优雅或最强大的解决方案,但它应该可以完成工作。

def movement(i):
    switcher={
        'automatik' : 6,
        'handaufzug' : 12
     }
    for word in my_string.split():
        temp = switcher.get(word.lower(), None)
        if temp is not None:
             return temp
    return None

watch['movement']  = movement(value)

希望这会有所帮助。