【问题标题】:Reading .json file and converting unicode data to utf-8读取 .json 文件并将 unicode 数据转换为 utf-8
【发布时间】:2020-04-15 14:05:40
【问题描述】:

我从来没有真正理解编码和解码在 python 中是如何工作的,而且我经常遇到这类问题。我必须读取一个 json 文件并将它的一些值与其他数据进行比较。

在其中一个文件中,我有字符串BAIXA DA INSCRI\u00c7\u00c3O ESTADUAL,它应该变成BAIXA DA INSCRICAO ESTADUAL。我正在阅读这样的文件:

with codecs.open(filepath, 'r') as file:
    filedata = json.loads(file.read())

但是字符串被读取为 unicode 并表示为 u'BAIXA DA INSCRI\xc7\xc3O ESTADUAL'

我怎样才能做到这一点,以及在 python 中使用编解码器的正确方法是什么?

【问题讨论】:

  • 你从哪里读到的?什么是编解码器?
  • codecs 用于设置文件编码,在 open 具有 encoding 参数的 Python 3 中不需要。当您从文件中读取inscrição 时,它不会神奇地解释字母ç => c 和ã => a,您必须设置正确的解释规则。不是编码问题。

标签: python


【解决方案1】:

您似乎想从文本中删除所有变音符号。您可以尝试使用 unicode 的正常形式 D(用于分解)并过滤掉高码:

txt = u'BAIXA DA INSCRI\xc7\xc3O ESTADUAL'
txt = u''.join(i for i in unicodedata.normalize('NFD', t) if ord(i) < 128).encode('ASCII')

它应该给出(字节)字符串:

'BAIXA DA INSCRICAO ESTADUAL'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2011-10-26
    相关资源
    最近更新 更多