【发布时间】:2017-08-17 22:30:48
【问题描述】:
我想用 Python 将 CSV 转换为一组 JSON 对象,按行格式化。
我在下面尝试了这个脚本,将几个 SO 答案放在一起,但是这种格式是这样的:
{
key:'value'
},
{
key:'value'
} // etc
我想将其格式化为:
{ key, 'value'},
{ key, 'value'}, // etc
我尝试了这里建议的几种方法来插入换行符,但到目前为止都没有奏效。
下面的脚本:
import sys, getopt
import csv
import json
CSV_PATH = 'path/file.csv'
JSON_PATH = 'path/demo.json'
csv_file = csv.DictReader(open(CSV_PATH, 'r'))
json_list = []
for row in csv_file:
json_list.append(row )
file(JSON_PATH, 'w').write(json.dumps(json_list, indent=4, separators=(' ,') ))
我的 csv 很简单:
SUM_F SUM_I SUM_P SUM_PI SUM_Bt SUM_BI SUM_M SUM_MI Year Month
15 3963 14 993 0 91 1 2879 2009 1
等等。
编辑:我在另一个 post 的 cmets 中收到了这个建议:
for x in json_list: print json.dumps(x)
这将打印我正在寻找的格式,但我还没有弄清楚如何将其写入 json 文件。
【问题讨论】:
-
我会尝试,但我不知道如何模仿您的
file.csv的内容,您介意发布一些示例行以显示其结构吗? -
@downshift 我编辑了我的问题,很简单
-
谢谢,你说得对,格式非常简单。尝试使用
separators=(' ,\n')对我有用。 -
如果我按照你的方式输入,我会收到“ValueError: too many values to unpack”消息..如果我将逗号和尾行放在引号中 (',', '\n') json 在每个字符串都有一个新行 @downshift
-
我的错是的,你是对的,很抱歉没有注意到这一点,我使用了两个分隔符,换行符包含在逗号中,所以完整
file(JSON_PATH, 'w').write(json.dumps(json_list, separators=(' ,\n', ':') ))。我根据json docs 中的“注释”删除了indent参数:“注意:由于默认项目分隔符是', ',因此在指定缩进 时输出可能包含尾随空格。您可以使用separators=(',', ': ')来避免这种情况。”
标签: json python-2.7 csv format