在JSON中格式化数据

2024-05-17 15:02:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过添加逗号分隔的方括号来格式化json格式的数据集。目标是将其导出到csv。数据集的某些字段中有些记录有漏洞,如果直接导入这些字段,就会出错。在

我有这条线

data_json_str = "[" + ','.join(data) + "]"

但我有个错误

^{pr2}$

Tags: csv数据json目标data格式错误记录
1条回答
网友
1楼 · 发布于 2024-05-17 15:02:03

我想你在用python3吧。在

在Python3中,有两种字符串格式:str (sequences of Unicode code points)bytes (sequences of bytes)。由于某些原因(比如在二进制模式下读取了文件),您最终得到了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),你可以写下,例如:

^{pr2}$

然后使用字符串连接或(最好是)the JSON library将它们转换为JSON字符串。在


编辑:从文件中读取的数据可能以字节而不是Unicode保存的一个原因是,当您从设置了二进制标志的文件中读取数据时,即open(filename, 'rb')而不是open(filename 'r')。有关如何在读取文件时更改默认编码的详细信息,请参见the ^{} function reference。在

因此,在最佳情况下,数据从文本文件读入Unicode字符串:

with open('data.txt', 'r') as f:
    data = f.readlines()

然后转换为json:

import json
print(json.dumps(data))

相关问题 更多 >