2016-06-10 77 views
-1

我有这样的代码:python3字节字符串编码

res = conn.getresponse() 
data = res.read() 

doc = xmltodict.parse(data) 

risultati = doc['result']['data'] 

mieiris = json.loads(risultati) 

for k in mieiris['Headword']['Component']: 
    try: 
     print(k['Text']) 
    except KeyError: 
     pass 
    except UnicodeEncodeError: 
     uhm = k['Text'].encode("utf-8") 
     print(uhm.decode("unicode_escape")) 

返回我这样的结果:

b'ci\xc3\xa0-o' 
inter. 
si usa come saluto amichevole e confidenziale quando ci si incontra o ci si lascia 
b'Dal ven. {\\i s{#c-v-r#}iao}, propr. \xe2\x80\x98(sono vostro) schiavo\xe2\x80\x99' 

现在我无法弄清楚如何正确显示使用UTF-最后一个字符串8编码。你有什么提示吗?

+0

这一切似乎很不必要的 - 你应该只得到'UnicodeEncodeError'如果您的控制台的语言环境可以” t(或认为它不能)支持你正在打印的角色。您应该修复您的控制台或写入文件。你最后的'encode()'/'decode()'完全是疯狂的。这听起来像一个典型的XY问题 –

+0

嗨@AlastairMcCormack,是的,这完全是疯狂的;)我已经做了很多尝试,以获得正确格式的字符串,这是我的最后一个;)我不能写入一个文件,这将是一个电报机器人,所以控制台将不会是我的最终输出。 –

+0

:)好的,所以你正在解决在你的最终应用中不存在的特定控制台的限制问题 - 这是一个糟糕的主意:)你是否正在编写自己的电报机器人(不知道UTF-8如何可以用莫尔斯表达)还是别人的?现在还不清楚你在问什么 –

回答

0

我用unidecode模块解决了。

所以我最后的是现在:

for k in mieiris['Headword']['Component']: 
    try: 
     print(k['Text']) 
    except KeyError: 
     pass 
    except UnicodeEncodeError: 
     print(unidecode(k['Text'])) 

希望这能帮助别人:)