784 Stimmen

Wie führe ich einen String-Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung durch?

Wie kann ich Groß-/Kleinschreibung unempfindlich String-Vergleich in Python tun?

Ich möchte den Vergleich einer regulären Zeichenkette mit einer Repository-Zeichenkette auf eine sehr einfache und pythonische Weise kapseln. Ich möchte auch die Möglichkeit haben, Werte in einem Diktat von Zeichenfolgen mit regulären Python Zeichenfolgen gehasht nachschlagen.

-4voto

Patrick Harrington Punkte 45400
def insenStringCompare(s1, s2):
    """ Method that takes two strings and returns True or False, based
        on if they are equal, regardless of case."""
    try:
        return s1.lower() == s2.lower()
    except AttributeError:
        print "Please only pass strings into this method."
        print "You passed a %s and %s" % (s1.__class__, s2.__class__)

6 Stimmen

Sie ersetzen ein excepting durch eine Nachricht, die in stdout ausgegeben wird, und geben dann None zurück, was False ist. Das ist in der Praxis sehr wenig hilfreich.

-4voto

Ali Paul Punkte 15

Dies ist eine weitere Regex, die ich in der letzten Woche lieben/hassen gelernt habe, so dass ich sie normalerweise als (in diesem Fall ja) etwas importiere, das widerspiegelt, wie ich mich fühle! Machen Sie eine normale Funktion.... fragen Sie nach Eingabe, dann verwenden Sie ....something = re.compile(r'foo*|spam*', yes.I)...... re.I (yes.I unten) ist das gleiche wie IGNORECASE, aber Sie können nicht so viele Fehler machen, wenn Sie es schreiben!

Sie suchen dann Ihre Nachricht mit Hilfe von Regex, aber ehrlich gesagt sollte das ein paar Seiten für sich sein, aber der Punkt ist, dass foo oder spam zusammengeführt werden und die Groß-/Kleinschreibung ignoriert wird. Wenn dann einer von beiden gefunden wird, zeigt lost_n_found einen von beiden an. Wenn keiner von beiden gefunden wird, ist lost_n_found gleich None. Wenn es nicht gleich None ist, wird die Benutzereingabe in Kleinbuchstaben mit "return lost_n_found.lower()" zurückgegeben.

Auf diese Weise können Sie alles, bei dem die Groß- und Kleinschreibung eine Rolle spielt, viel leichter zuordnen. Schließlich steht (NCS) für "no one cares seriously...!" oder nicht case sensitive....whatever

Wenn jemand Fragen hat, kann er mich anrufen.

    import re as yes

    def bar_or_spam():

        message = raw_input("\nEnter FoO for BaR or SpaM for EgGs (NCS): ") 

        message_in_coconut = yes.compile(r'foo*|spam*',  yes.I)

        lost_n_found = message_in_coconut.search(message).group()

        if lost_n_found != None:
            return lost_n_found.lower()
        else:
            print ("Make tea not love")
            return

    whatz_for_breakfast = bar_or_spam()

    if whatz_for_breakfast == foo:
        print ("BaR")

    elif whatz_for_breakfast == spam:
        print ("EgGs")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X