【问题标题】:What does the Encoding function in R do and is there a Python equivalent?R 中的 Encoding 函数有什么作用,是否有 Python 等价物?
【发布时间】:2020-10-06 17:40:10
【问题描述】:

我正在将 R 翻译成 Python 并且有一行代码说

编码(项目)== 'UTF-8'

其中 item 是一些字符向量。 这行代码是什么意思,如何在 Python 中复制它?

【问题讨论】:

  • 添加 # !/usr/bin/python #coding:utf-8 到你的标题
  • 我为什么要这样做?
  • 您可以尝试bytes_item.decode("utf-8"),如果您遇到错误,那么它不是utf-8 中的文本 - 您可以使用try/except 捕获错误。还有模块chardet(字符检测)。但似乎Encoding 正在为字符串分配编码,但Python 始终使用UNICODE 为字符串,它可以转换为编码为UTF-8latin1 等的字节。
  • @Zhubei-Federer:真的需要吗? Python3 假设自动源为 UTF-8,这个问题不是关于源代码的编码,而是关于动态编码/解码。

标签: python r python-3.x function character-encoding


【解决方案1】:

在 Python 3+ 中,str 始终以 UTF-8 格式存储。

您可以使用其他编码方案对其进行编码,例如

>>> x='욜로'; y = x.encode('CP949')
>>> type(y)
<class 'bytes'>

结果是bytes 类,它只是一个字节流。

它没有任何关于它存储什么或使用哪种编码的信息,

因为字节可以是任何东西(字符串、整数、浮点数...)。

如果你确定 byte 中的变量是字符串,

你可以猜出它是用哪种编码编码的,比如

>>> import chardet
>>> chardet.detect(y)
{'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}

所以如果type(item)str,它总是True, 如果type(item)bytes,你可以使用chardet.detect(y)['encoding'],但它并不总是正确的

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 2021-02-14
    • 2021-06-19
    • 2022-10-15
    • 2023-01-17
    • 2019-12-15
    • 2011-05-28
    • 2014-01-22
    • 1970-01-01
    相关资源
    最近更新 更多