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

Dav*_*dJB 6 python

我正在尝试使用python从关键字中找到匹配值.我的值存储在list(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
Run Code Online (Sandbox Code Playgroud)

And*_*_CS 5

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

for item in my_list:
    if 'webcam' == item.lower()
        print item.lower()
Run Code Online (Sandbox Code Playgroud)

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

  • 你是什​​么意思"转回"?显示的代码保留项目? (2认同)
  • 这是正确的答案.@john`"TESTING".lower()`不会改变原始``TESTING'字符串的大小写.这是不可能的,因为字符串在Python中是不可变的(它们不能被更改).它创建一个包含全部小写字母的NEW字符串,并将其进行比较. (2认同)

Ada*_*ith 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
Run Code Online (Sandbox Code Playgroud)

这是一个坏主意的原因是,使用正则表达式进行简单匹配就像使用反铲挖掘桩孔。当然可以,但是它昂贵,费时,并且有机会引入您从未想到的错误,直到您不小心将吊杆从客厅的窗户上晃了下来。