Ich habe versucht, Difflib zu verwenden, um Wörter und Sätze zu vergleichen (in diesem Fall so etwas wie Wörterbuch) und wenn ich difflib Ausgabe mit Schlüsseln im Wörterbuch zu vergleichen, bekomme ich KeyError. Kann mir jemand erklären, warum das passiert? Wenn ich nicht difflib benutze, funktioniert alles gut.Warum nach der Verwendung von Difflib auf Unicode-String bekomme ich KeyError
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import difflib
import operator
lst = ['król']
word = 'król'
dct = {}
for order in lst:
word_match_ratio = difflib.SequenceMatcher(None, word, order).ratio()
dct[order] = word_match_ratio
print order
print('%s %s' % (order, word_match_ratio))
sorted_matching_words = sorted(dct.items(), key=operator.itemgetter(1))
sorted_matching_words = str(sorted_matching_words.pop()[:1])
x = len(sorted_matching_words) - 3
word = sorted_matching_words[3:x]
print word
def translate(someword):
someword = trans_dct[someword]
print(someword)
return someword
trans_dct = {
"król": 'king'
}
print trans_dct
word = translate(word)
Erwartete Ausgabe: König
Statt, dass ich bekommen:
Traceback (most recent call last):
File "D:/Python/Testing stuff.py", line 64, in <module>
word = translate(word)
File "D:/Python/Playground/Testing stuff.py", line 56, in translate
someword = trans_dct[someword]
KeyError: 'kr\\xf3l'
Ich verstehe nicht, warum dies geschieht es sieht aus wie difflib etwas komisch, weil tut, wenn ich etwas tun, wie dies:
uni = 'kr\xf3l'
print uni
def translate(word):
word = dct1[word]
print(word)
return word
dct1 = {
"król": 'king'
}
print dct1
word = translate('kr\xf3l')
print word
Alles funktioniert wie vorgesehen.
ist es möglich, müssen Sie 'u '...'' an den Anfang der Unicode-str hinzufügen? @ MarkTolonen 'behaupten, repr ('kr \ xf3l') == 'kr \\ xf3l'' –
@ TadhgMcDonald-Jensen, nein, es war OP's Hack, um' Wort' aus 'sorted_matching_words' zu bekommen. 'str()' war dort das Falsche. –