regex - Case insensitive matching python -
i want match items 1 list in without worrying case sensitivity.
mylist1 = ['fbh_q1ba8', 'fhh_q1ba9', 'fbh_q1ba10','hoot'] mylist2 = ['fbh_q1ba8', 'trick','fbh_q1ba9', 'fbh_q1ba10','maj','joe','civic']
i doing before:
for item in mylist2: if item in mylist1: print "true" else: print "false"
but fails because not case sensitive.
i aware of re.match("test", "test", re.ignorecase) how can apply example?
normalize case str.lower()
:
for item in mylist2: print item.lower() in mylist1
the in
containment operator returns true
or false
, easiest print that:
>>> mylist1 = ['fbh_q1ba8', 'fhh_q1ba9', 'fbh_q1ba10','hoot'] >>> mylist2 = ['fbh_q1ba8', 'trick','fbh_q1ba9', 'fbh_q1ba10','maj','joe','civic'] >>> item in mylist2: ... print item.lower() in mylist1 ... true false false true false false false
if mylist1
contains mixed case values, you'll need make loop explicit; use generator expression produce lowercased values; testing against ensures many elements lowercased needed find match:
for item in mylist2: print item.lower() in (element.lower() element in mylist1)
demo
>>> mylist1 = ['fbh_q1ba8', 'fhh_q1ba9', 'fbh_q1ba10','hoot'] >>> item in mylist2: ... print item.lower() in (element.lower() element in mylist1) ... true false false true false false false
another approach use any()
:
for item in mylist2: print any(item.lower() == element.lower() element in mylist1)
any()
short-circuits; true
value has been found (a matching element found), generator expression iteration stopped early. have lowercase item
each iteration, less efficient.
another demo:
>>> item in mylist2: ... print any(item.lower() == element.lower() element in mylist1) ... true false false true false false false
Comments
Post a Comment