【问题标题】:Convert CSV to Bytes-like Object in python在 python 中将 CSV 转换为类似字节的对象
【发布时间】:2021-05-13 21:41:56
【问题描述】:

我有一个数据框,我正在使用将该数据框更改为 csv

new_csv = df.to_csv()

现在我想将此 new_csv 转换为字节对象。当我尝试这个时:

new_bytes_obj = io.BytesIO(new_csv) 

我收到一个错误:

TypeError: 需要一个类似字节的对象,而不是 'str

有什么办法吗?

【问题讨论】:

  • 字节类对象是什么意思??
  • @U11-Forward 在执行此操作时出现此错误 new_bytes_obj = io.BytesIO(new_csv) TypeError: a bytes-like object is required, not 'str
  • @ankursuman:好问题是为什么你需要像对象这样的字节。你可以使用new_str_obj = io.StringIO(new_csv)。如果需要字节,可以使用encode:new_bytes_obj = io.BytesIO(new_csv.encode()) 将字符串转换为字节。
  • @ankursuman 字符串使用 str.encode() 转换为字节。默认编码为 UTF-8。 Python 字符串是 Unicode,所以 UTF-8 是最好的选择

标签: python python-3.x csv


【解决方案1】:

从您的问题中不清楚为什么需要 BytesIO 对象。文本数据自然、明显且通常正确的解决方案是将其封装在 StringIO 对象中。

new_str_obj = io.StringIO(new_csv)

如果您需要 BytesIO,则需要将您的 str 数据转换为 bytes 数据。在这种情况下,您需要决定如何对字符串进行编码;如果您不知道,UTF-8 通常是一个不错的猜测,但您可能应该花一些时间来了解这对您的特定应用程序的实际意义。

new_bytes_obj = io.BytesIO(new_csv.encode('utf-8'))

现在最好阅读http://nedbatchelder.com/text/unipain.html 和/或Joel Spolsky 的The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

【讨论】:

    猜你喜欢
    • 2021-02-23
    • 2018-02-14
    • 2019-02-04
    • 2019-06-24
    • 2019-06-05
    • 2019-09-07
    • 2013-06-12
    • 2022-01-07
    • 2017-03-13
    相关资源
    最近更新 更多