2024-05-17 15:02:03 发布
网友
我试图通过添加逗号分隔的方括号来格式化json格式的数据集。目标是将其导出到csv。数据集的某些字段中有些记录有漏洞,如果直接导入这些字段,就会出错。在
我有这条线
data_json_str = "[" + ','.join(data) + "]"
但我有个错误
我想你在用python3吧。在
在Python3中,有两种字符串格式:str (sequences of Unicode code points)和bytes (sequences of bytes)。由于某些原因(比如在二进制模式下读取了文件),您最终得到了bytes,而不是data对象中的字符串。它们既不能用作','.join的参数,也不能传递给json.dumps:
bytes
data
','.join
json.dumps
>>> data = [b'abc', b'def'] >>> data_json_str = "[" + ','.join(data) + "]" Traceback (most recent call last): File "python", line 1, in <module> TypeError: sequence item 0: expected str instance, bytes found >>> import json >>> json.dumps(data) Traceback (most recent call last): File "python", line 1, in <module> TypeError: b'abc' is not JSON serializable
必须首先将字节转换为unicode字符串。如果你已经知道编码(通常是UTF-8),你可以写下,例如:
然后使用字符串连接或(最好是)the JSON library将它们转换为JSON字符串。在
编辑:从文件中读取的数据可能以字节而不是Unicode保存的一个原因是,当您从设置了二进制标志的文件中读取数据时,即open(filename, 'rb')而不是open(filename 'r')。有关如何在读取文件时更改默认编码的详细信息,请参见the ^{} function reference。在
open(filename, 'rb')
open(filename 'r')
因此,在最佳情况下,数据从文本文件读入Unicode字符串:
with open('data.txt', 'r') as f: data = f.readlines()
然后转换为json:
import json print(json.dumps(data))
我想你在用python3吧。在
在Python3中,有两种字符串格式:str (sequences of Unicode code points)和bytes (sequences of bytes)。由于某些原因(比如在二进制模式下读取了文件),您最终得到了
bytes
,而不是data
对象中的字符串。它们既不能用作','.join
的参数,也不能传递给json.dumps
:必须首先将字节转换为unicode字符串。如果你已经知道编码(通常是UTF-8),你可以写下,例如:
^{pr2}$然后使用字符串连接或(最好是)the JSON library将它们转换为JSON字符串。在
编辑:从文件中读取的数据可能以字节而不是Unicode保存的一个原因是,当您从设置了二进制标志的文件中读取数据时,即} function reference 。在
open(filename, 'rb')
而不是open(filename 'r')
。有关如何在读取文件时更改默认编码的详细信息,请参见the ^{因此,在最佳情况下,数据从文本文件读入Unicode字符串:
然后转换为json:
相关问题 更多 >
编程相关推荐