不区分大小写的匹配python

2024-10-01 19:22:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将一个列表中的项匹配到另一个列表中,而不必担心是否区分大小写。在

mylist1 = ['fbH_q1ba8', 'fHh_Q1ba9', 'fbh_q1bA10','hoot']
mylist2 = ['FBH_q1ba8', 'trick','FBH_q1ba9', 'FBH_q1ba10','maj','joe','civic']

我以前也这样做过:

^{pr2}$

但这失败了,因为它不区分大小写。在

我知道重新匹配(“测试”,“测试”,忽略案例)但我如何将其应用到我的例子中呢?在


Tags: 列表区分trickmylist2mylist1fhhhootfbh
3条回答

其他答案是正确的。但这两个列表中的情况并不相同。万一你需要:

mylist1 = ['fbh_q1ba8', 'fbh_q1ba9', 'fbh_q1ba10','hoot']
mylist2 = ['FBH_q1ba8', 'trick','FBH_q1ba9', 'FBH_q1ba10','maj','joe','civic']

for item in mylist2:
    found = "false"
    for item2 in mylist1:
        if item.lower() == item2.lower():
            found = "true"
    print found

使用^{}规范化大小写:

for item in mylist2:
    print item.lower() in mylist1

in包含运算符已经返回True或{},最简单的方法是打印:

^{pr2}$

如果mylist1包含大小写混合值,则需要使循环显式;使用生成器表达式生成小写值;对此进行测试可确保仅根据需要对多个元素进行小写以找到匹配项:

for item in mylist2:
    print item.lower() in (element.lower() for element in mylist1)

演示

>>> mylist1 = ['fbH_q1ba8', 'fHh_Q1ba9', 'fbh_q1bA10','hoot']
>>> for item in mylist2:
...     print item.lower() in (element.lower() for element in mylist1)
... 
True
False
False
True
False
False
False

另一种方法是使用^{}

for item in mylist2:
    print any(item.lower() == element.lower() for element in mylist1)

any()也会短路;一旦找到True值(找到匹配元素),生成器表达式迭代就会提前停止。每次迭代都必须小写item,因此效率稍低。在

另一个演示:

>>> for item in mylist2:
...     print any(item.lower() == element.lower() for element in mylist1)
... 
True
False
False
True
False
False
False

为什么不直接做:

for item in mylist2:
    if item.lower() in [j.lower() for j in mylist1]:
        print "true"
    else:
        print "false"

它使用.lower()进行比较,从而得到所需的结果。在

相关问题 更多 >

    热门问题