你需要編碼,你第一個文本,然後再進行解碼的人物:
>>> print ''.join(character_swap.get(ch.encode('utf8'), ch) for ch in text.decode('utf8'))
idzie waz waska drozka
其因的Python列表理解不默認編碼你的Unicode,實際上你在做她的是:
>>> [i for i in text]
['i', 'd', 'z', 'i', 'e', ' ', 'w', '\xc4', '\x85', '\xc5', '\xbc', ' ', 'w', '\xc4', '\x85', 's', 'k', '\xc4', '\x85', ' ', 'd', 'r', '\xc3', '\xb3', '\xc5', '\xbc', 'k', '\xc4', '\x85']
而對於一個性格像ą
我們:
>>> 'ą'
'\xc4\x85'
正如你可以在列表解析蟒之內看到2部分\xc4
和\x85
分裂它。所以得到的是騎您可以通過utf8
encocding第一解碼文本:
>>> [i for i in text.decode('utf8')]
[u'i', u'd', u'z', u'i', u'e', u' ', u'w', u'\u0105', u'\u017c', u' ', u'w', u'\u0105', u's', u'k', u'\u0105', u' ', u'd', u'r', u'\xf3', u'\u017c', u'k', u'\u0105']
你到底想幹什麼? –
您可以在代碼中看到將另一個字符換成另一個更改±至a,ż至z和ó至o(波蘭語特定字母) – Gunnm
@Gunnm提供預期輸出 – The6thSense