Python – Unterschied zwischen zwei Strings

Ich möchte eine Menge Worte in einer Liste speichern. Viele dieser Worte sind sehr ähnlich. Zum Beispiel habe ich Wort afrykanerskojęzyczny und viele Worte wie afrykanerskojęzycznym , afrykanerskojęzyczni , nieafrykanerskojęzyczni . Was ist die effektive (schnelle und geben kleine Diff-Größe) Lösung, um Unterschied zwischen zwei Strings zu finden und zweiten String von der ersten und diff zu wiederherstellen?

  • Wie man den Parse-Baum zu glätten und in einem String für weitere String-Operationen python nltk zu speichern
  • Split-String in Gruppen von gegebener Größe
  • Python string manipulation
  • Python konvertieren String-Objekt in Wörterbuch
  • Gibt es eine Möglichkeit, arabische Zeichen ohne Rücksicht auf ihre ursprüngliche / mediale / endgültige Form zu vergleichen?
  • Parsing String nach Datum in Python
  • Drucken Sie das Ergebnis sobald die Benutzereingabe "fertig"
  • Konvertieren Sie String in Date-Typ auf Python
  • 4 Solutions collect form web for “Python – Unterschied zwischen zwei Strings”

    Sie können ndiff im difflib-Modul verwenden, um dies zu tun. Es hat alle notwendigen Informationen, um einen String in einen anderen String umzuwandeln.

    Ein einfaches Beispiel:

     import difflib cases=[('afrykanerskojęzyczny', 'afrykanerskojęzycznym'), ('afrykanerskojęzyczni', 'nieafrykanerskojęzyczni'), ('afrykanerskojęzycznym', 'afrykanerskojęzyczny'), ('nieafrykanerskojęzyczni', 'afrykanerskojęzyczni'), ('nieafrynerskojęzyczni', 'afrykanerskojzyczni'), ('abcdefg','xac')] for a,b in cases: print('{} => {}'.format(a,b)) for i,s in enumerate(difflib.ndiff(a, b)): if s[0]==' ': continue elif s[0]=='-': print(u'Delete "{}" from position {}'.format(s[-1],i)) elif s[0]=='+': print(u'Add "{}" to position {}'.format(s[-1],i)) print() 

    Drucke:

     afrykanerskojęzyczny => afrykanerskojęzycznym Add "m" to position 20 afrykanerskojęzyczni => nieafrykanerskojęzyczni Add "n" to position 0 Add "i" to position 1 Add "e" to position 2 afrykanerskojęzycznym => afrykanerskojęzyczny Delete "m" from position 20 nieafrykanerskojęzyczni => afrykanerskojęzyczni Delete "n" from position 0 Delete "i" from position 1 Delete "e" from position 2 nieafrynerskojęzyczni => afrykanerskojzyczni Delete "n" from position 0 Delete "i" from position 1 Delete "e" from position 2 Add "k" to position 7 Add "a" to position 8 Delete "ę" from position 16 abcdefg => xac Add "x" to position 0 Delete "b" from position 2 Delete "d" from position 4 Delete "e" from position 5 Delete "f" from position 6 Delete "g" from position 7 

    Was du verlangst, ist eine spezialisierte Form der Kompression. Xdelta3 wurde für diese besondere Art von Kompression entworfen, und es gibt eine Python-Bindung für sie, aber man konnte vermutlich mit zlib direkt aussteigen. Sie möchten zlib.compressobj und zlib.decompressobj mit dem zdict Parameter auf Ihr " afrykanerskojęzyczny " setzen, zB afrykanerskojęzyczny .

    Caveats sind zdict wird nur in Python 3.3 und höher unterstützt, und es ist am einfachsten zu kodieren, wenn Sie das gleiche "Basiswort" für alle Ihre Diffs haben, was kann oder auch nicht sein, was Sie wollen.

    Sie können in das Regex-Modul (der Fuzzy-Abschnitt) schauen. Ich weiß nicht, ob Sie die tatsächlichen Unterschiede bekommen können, aber zumindest können Sie die zulässige Anzahl von verschiedenen Arten von Änderungen wie Einfügen, Löschen und Ersetzungen angeben:

     import regex sequence = 'afrykanerskojezyczny' queries = [ 'afrykanerskojezycznym', 'afrykanerskojezyczni', 'nieafrykanerskojezyczni' ] for q in queries: m = regex.search(r'(%s){e<=2}'%q, sequence) print 'match' if m else 'nomatch' 

    Die Antwort auf meinen Kommentar oben auf die Ursprüngliche Frage lässt mich denken, das ist alles, was er will:

     loopnum = 0 word = 'afrykanerskojęzyczny' wordlist = ['afrykanerskojęzycznym','afrykanerskojęzyczni','nieafrykanerskojęzyczni'] for i in wordlist: wordlist[loopnum] = word loopnum += 1 

    Dies wird Folgendes tun:

    Für jeden Wert in der Wortliste setzen Sie den Wert der Wortliste auf den ursprünglichen Code.

    Alles, was Sie tun müssen, ist, dieses Stück Code zu setzen, wo Sie die Wortliste ändern müssen, um sicherzustellen, dass Sie die Wörter speichern, die Sie in der Wortliste ändern müssen, und dass das ursprüngliche Wort korrekt ist.

    Hoffe das hilft!

    Python ist die beste Programmiersprache der Welt.