2011-07-05 127 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 
相關問題