gpt4 book ai didi

python - csv.writer 打印带有前缀和引号的 "bytes"

转载 作者:太空宇宙 更新时间:2023-11-04 05:25:44 29 4
gpt4 key购买 nike

在 Python 2 中,这段代码符合我的预期:

import csv
import sys

writer = csv.writer(sys.stdout)
writer.writerow([u'hello', b'world'])

它打印:

hello,world

但是在 Python 3 中,bytes 打印时带有前缀和引号:

hello,b'world'

由于 CSV 是一种通用数据交换格式,而且除了 Python 之外没有其他系统知道 b'' 是什么,因此我需要禁用此行为。但我还没弄明白怎么办。

当然,我可以先对所有bytes 使用str.decode,但那样不方便且效率低下。我真正想要的是将文字字节写入文件,或者将编码(例如“ascii”)传递给 csv.writer() 以便它知道如何解码任何 bytes 它看到的对象。

最佳答案

csv 写入文本文件并期望 Python 3 中的 Unicode(文本)字符串。

csv 写入二进制文件并期望 Python 2 中的字节字符串,但允许使用默认的 ascii 编解码器将 Unicode 字符串隐式编码为字节字符串。 Python 3 不允许隐式转换,因此您无法真正避免它:

#!python3
import csv
import sys
writer = csv.writer(sys.stdout)
writer.writerow(['hello', b'world'.decode()])

关于python - csv.writer 打印带有前缀和引号的 "bytes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38770522/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com