2011-07-05 94 views
30

我正在寻找在Python中忽略大小写字符串比较。 我试过:如何匹配忽略大小写的字符串中的子字符串?

if line.find('mandy') >= 0: 

但是忽略大小写没有成功。我需要在给定文本 文件中找到一组单词。我正在逐行阅读文件。字上线可→小敏,小敏,MANDY等我不希望使用toupper/tolower等]

我在寻找蟒蛇相当于Perl代码的下方

if($line=~/^Mandy Pande:/i) 

回答

52

如果你不想使用str.lower(),您可以使用正则表达式:

import re 

if re.search('mandy', 'Mandy Pande', re.IGNORECASE): 
    # is True 
10

还有另一篇文章here,尝试寻找这个

顺便说一句,你正在寻找.lower()方法

string1 = "hi" 
string2 = "HI" 
if string1.lower() == string2.lower(): 
    print "Equals!" 
else: 
    print "Different!" 
+0

无他不是。 “[我不想使用toupper/tolower等]” –

+0

我知道,我读过,但re.match和re.search解决方案不检查正则表达式中使用的特殊字符,如()或[] –

+0

有什么()或[]与这个问题有关? –

2
import re 
if re.search('(?i)Mandy Pande:', line): 
    ... 
+0

这不检查/匹配控制字符的正则表达式像[]或()如果我没有错... –

1

看到this

In [14]: re.match("mandy", "MaNdY", re.IGNORECASE) 
Out[14]: <_sre.SRE_Match object at 0x23a08b8> 
3
a = "MandY" 
alow = a.lower() 
if "mandy" in alow: 
    print "true" 

变通

0

尝试:

if haystackstr.lower().find(needlestr.lower()) != -1: 
    # True 
相关问题