在Python中不区分大小写匹配字符串

7 投票
2 回答
31149 浏览
提问于 2025-04-18 10:24

我正在尝试用Python从一个关键词中找到匹配的值。我的值存储在一个列表中(my_list),在下面的例子中,我想找到单词“Webcam”。我只想在完全匹配的情况下返回这个单词。

使用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 个回答

5

如果因为某种原因你真的需要比较不区分大小写的字符串(而不是生成一个统一大小写的字符串),你可以使用正则表达式和 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

之所以说这是个坏主意,是因为用正则表达式来做简单的匹配,就像用挖掘机来挖柱子洞。虽然你可以这么做,但这既费钱又耗时,还可能引入一些你没想到的错误,就像你不小心把挖掘机的臂杆挥到了客厅窗户一样。

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

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

注意: 在 Python 中,字符串是 不可变 的 - 这意味着它不会修改列表中的字符串。

撰写回答