web-dev-qa-db-fra.com

Comment faire correspondre une sous-chaîne dans une chaîne en ignorant la casse?

Je cherche à ignorer la comparaison des chaînes de casse en Python. J'ai essayé avec:

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

mais pas de succès pour ignorer le cas. J'ai besoin de trouver un ensemble de mots dans un fichier texte donné. Je lis le fichier ligne par ligne. Le mot sur une ligne peut être mandy, Mandy, MANDY , etc. (je ne sais pas voulez utiliser toupper/tolower, etc.).

Je cherche l'équivalent Python du code Perl ci-dessous.

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

Si vous ne voulez pas utiliser str.lower(), vous pouvez utiliser regexp:

import re

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

Il y a un autre post ici . Essayez de regarder ça.

BTW, vous recherchez la méthode .lower():

string1 = "hi"
string2 = "HI"
if string1.lower() == string2.lower():
    print "Equals!"
else:
    print "Different!"
12
Samuele Mattiuzzo
a = "MandY"
alow = a.lower()
if "mandy" in alow:
    print "true"

solution de contournement

4
Riccardo
import re
if re.search('(?i)Mandy Pande:', line):
    ...
2
a'r

Voir ceci .

In [14]: re.match("mandy", "MaNdY", re.IGNORECASE)
Out[14]: <_sre.SRE_Match object at 0x23a08b8>
2
Fredrik Pihl

Essayer:

if haystackstr.lower().find(needlestr.lower()) != -1:
  # True
1
norbertoisaac