我正在寻找Python中的忽略大小写字符串比较。 我尝试过:
if line.find('mandy') >= 0:
但忽略案例没有成功。我需要在给定的文本文件中找到一组单词。我正在逐行阅读文件。一行上的Word可以是 mandy , Mandy , MANDY 等(我不想使用toupper
/ { {1}}等。)。
我正在寻找下面的Perl代码的Python等价物。
tolower
答案 0 :(得分:82)
如果您不想使用str.lower()
,可以使用regexp:
import re
if re.search('mandy', 'Mandy Pande', re.IGNORECASE):
# is True
答案 1 :(得分:12)
还有另一篇帖子here。试着看看这个。
BTW,您正在寻找.lower()
方法:
string1 = "hi"
string2 = "HI"
if string1.lower() == string2.lower():
print "Equals!"
else:
print "Different!"
答案 2 :(得分:4)
a = "MandY"
alow = a.lower()
if "mandy" in alow:
print "true"
解决
答案 3 :(得分:2)
import re
if re.search('(?i)Mandy Pande:', line):
...
答案 4 :(得分:2)
请参阅this。
In [14]: re.match("mandy", "MaNdY", re.IGNORECASE)
Out[14]: <_sre.SRE_Match object at 0x23a08b8>
答案 5 :(得分:1)
尝试:
if haystackstr.lower().find(needlestr.lower()) != -1:
# True
答案 6 :(得分:1)
您还可以使用:s.lower() in str.lower()
答案 7 :(得分:1)
如果是pandas系列,可以在str.contains中提及case=False
data['Column_name'].str.contains('abcd', case=False)
或者如果只是两个字符串比较,请尝试下面的另一种方法
您可以使用 casefold() 方法。 casefold() 方法在比较时会忽略大小写。
firstString = "Hi EVERYONE"
secondString = "Hi everyone"
if firstString.casefold() == secondString.casefold():
print('The strings are equal.')
else:
print('The strings are not equal.')
输出:
The strings are equal.
答案 8 :(得分:0)
您可以将in
运算符与lower
字符串方法结合使用。
if "mandy" in line.lower():
答案 9 :(得分:0)
可以在将 str.casefold
应用于两个字符串后使用 in
运算符。
str.casefold
是不区分大小写比较时推荐使用的方法。
返回字符串的大小写副本。大小写折叠字符串可用于无大小写匹配。Casefolding 类似于小写,但更具侵略性,因为它旨在消除字符串中的所有大小写区别。例如,德语小写字母“ß”相当于“ss”。由于它已经是小写的,lower() 对 'ß' 没有任何作用; casefold() 将其转换为“ss”。
大小写算法在 Unicode 标准的第 3.13 节中描述。
3.3 版的新功能。
对于不区分大小写的子字符串搜索:
needle = "TEST"
haystack = "testing"
if needle.casefold() in haystack.casefold():
print('Found needle in haystack')
对于不区分大小写的字符串比较:
a = "test"
b = "TEST"
if a.casefold() == b.casefold():
print('a and b are equal, ignoring case')