无论大小写差异如何,都在python中匹配字符串

时间:2014-06-19 18:02:36

标签: python

我试图使用python从关键字中找到匹配值。我的值存储在列表(my_list)中,在下面的示例中,我试图找到“网络摄像头”这个词。如果它完全匹配,我只想返回这个词。

使用item.find有效,但仅在大小写匹配时(即大写和小写必须正确)。但无论如何我想要退回该项目。但是,我不希望匹配所有字符串实例,例如' Webcamnew'所以使用any()方法我认为不会工作。有谁知道怎么做...?

my_list = ['webcam', 'home', 'Space', 'Maybe later', 'Webcamnew']

for item in my_list:
    if item.find("Webcam") != -1:
        print item

2 个答案:

答案 0 :(得分:5)

my_list = ['webcam', 'home', 'Space', 'Maybe later', 'Webcamnew']

for item in my_list:
    if 'webcam' == item.lower()
        print item.lower()

注意Python中的字符串不可变 - 它不会修改列表中的字符串。

答案 1 :(得分:4)

如果由于某种原因你真的需要比较不区分大小写的字符串(而不是生成相同的字符串),则可以使用带有re.IGNORECASE标志的正则表达式。对于您似乎想要做的事情,这是一个可怕的想法,但代码是:

import re

my_list = ['webcam', 'home', 'Space', 'Maybe later', 'Webcamnew']
for item in my_list:
    if re.match("webcam$",item, flags=re.I): # re.I == re.IGNORECASE
        print item

这是一个坏主意的原因是使用正则表达式进行简单匹配就像使用反铲挖掘后洞一样。当然,你可以做到这一点,但它既昂贵又耗时,而且有机会引入你没想到的错误,直到你不小心将吊臂摆过你的起居室窗户。