Python-strings vergleichen ignorieren Sonderzeichen
Möchte ich zum vergleichen von zwei Zeichenfolgen, so dass der Vergleich ignoriert werden soll, Unterschiede in den Sonderzeichen. Das ist,
Hai, dies ist ein test
Sollten übereinstimmen mit
Hai ! dies ist ein test "oder" Hai dies ist ein test
Gibt es eine Möglichkeit, dies zu tun, ohne änderung des original-strings?
Was sind "Sonderzeichen" in diesem Zusammenhang? Wichtiger ist, werden Leerzeichen mitgezählt? Denn dann ignoriert Sie die '!' lässt zwei Räume im Gegensatz zu der in der ersten Zeichenfolge.
InformationsquelleAutor Rohith | 2013-05-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser entfernt, die Satzzeichen und die Leerzeichen, bevor wir den Vergleich:
Verwenden
str.maketrans(dict.fromkeys(remove))
wie die Karte (erstes argument).InformationsquelleAutor root
Dieser erzeugt zwei temporäre Listen, aber ändert nicht den ursprünglichen Zeichenfolgen in keiner Weise.
c in string.letters
verwenden, können Siec.isalpha()
.guter Punkt, das ist kürzer. Ich bearbeitet meine Antwort.
InformationsquelleAutor Cairnarvon
Vergleichen eine beliebige Anzahl von strings für die alphabetischen Entsprechungen,
Dem Drucke
True
. Ändern sollte<=
je nachdem, was Sie zurückgeben möchten, für die keine Argumente.InformationsquelleAutor Jared
In der Regel, Sie würde ersetzen Sie die Zeichen, die Sie möchten, zu ignorieren, und dann vergleichen Sie:
InformationsquelleAutor Dan Lecocq
Vielleicht können Sie zunächst entfernen Sie die Sonderzeichen in Ihren zwei strings, dann vergleichen Sie.
In deinem Beispiel, werden die Sonderzeichen ',','!' und Raum.
so für die Saiten:
dann können Sie einfach vergleichen tempa und tempb.
InformationsquelleAutor Flickerlight
Verwenden Sie die Die Levenshtein-Metrik zu Messen den Abstand zwischen zwei Zeichenketten. Rang Ihr string-Vergleiche nach Punkten. Pick der top n entspricht.
InformationsquelleAutor Alex Reynolds
Da Sie erwähnen, dass Sie nicht möchten, ändern Sie die original-Saiten, Sie können auch die operation in-place - und ohne dass irgendwelche zusätzlichen Platz.
InformationsquelleAutor Wesley Baugh