【问题标题】:python3 bytes string encodingpython3字节字符串编码
【发布时间】:2016-06-10 11:05:35
【问题描述】:

我有这个代码:

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 编码正确显示最后一个字符串。你有什么提示吗?

【问题讨论】:

  • 这一切似乎都没有必要——如果你的控制台的语言环境不能(或认为它不能)支持你正在打印的字符,你应该只得到UnicodeEncodeError。您应该修复控制台或写入文件。你最后的encode() / decode() 完全疯了。这听起来像是典型的 X-Y 问题
  • 嗨@AlastairMcCormack,是的,这太疯狂了;)为了获得正确格式化的字符串,我做了很多试验,这是我的最后一个;)我不能写入文件,这将是一个电报机器人,因此控制台不会是我的最终输出。
  • :) 好的,所以您正在解决一个问题,即您的特定控制台中的限制在您的最终应用程序中不存在 - 这是一个坏主意 :) 您是否正在编写自己的电报机器人(不确定 UTF-8 如何用莫尔斯语表达)或其他人的?就目前而言,不清楚你在问什么
  • 我发现模块 'uniencode' 解决了我的问题 :) 无论如何我正在写一个 Telegram 机器人。感谢您的宝贵时间!

标签: python-3.4 python-unicode


【解决方案1】:

我已经用 unidecode 模块解决了。

所以我的最后一次是现在:

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

希望这对其他人有帮助:)

【讨论】:

    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 2019-09-04
    相关资源
    最近更新 更多