Python 3 JSON写入CSV E

2024-05-16 07:36:53 发布

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

我试图从JSON格式的数据中写出一个csv文件。我可以获取要写入csv文件的字段名,但不能获取所需的项值。这是我第一次用python编写代码,所以任何帮助都将不胜感激。json文件可在下面找到以供参考:

https://data.ny.gov/api/views/nqur-w4p7/rows.json?accessType=DOWNLOAD

这是我的错误:

Traceback (most recent call last):
  File "ChangeDataType.py", line 5, in <module>
    data = json.dumps(inputFile)
  File "/usr/lib64/python3.4/json/__init__.py", line 230, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib64/python3.4/json/encoder.py", line 192, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib64/python3.4/json/encoder.py", line 250, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib64/python3.4/json/encoder.py", line 173, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <_io.TextIOWrapper name='rows.json?accessType=DOWNLOAD' mode='r' encoding='UTF-8'> is not JSON serializable

这是我的密码:

import json
import csv

inputFile = open("rows.json?accessType=DOWNLOAD", "r")
data = json.dumps(inputFile)

with open("Data.csv","w") as csvfile:

    writer = csv.DictWriter(csvfile, extrasaction='ignore', fieldnames=["date", "new_york_state_average_gal", "albany_average_gal", "binghamton_average_gal",\
 "buffalo_average_gal", "nassau_average_gal", "new_york_city_average_gal", "rochester_average_gal", "syracuse_average_gal","utica_average_gal"])

    writer.writeheader()

    for row in data:
        writer.writerow([row["date"], row["new_york_state_average_gal"], row["albany_average_gal"], row["binghamton_average_gal"],\
                         row["buffalo_average_gal"], row["nassau_average_gal"], row["new_york_city_average_gal"], row["rochester_average_gal"], row["syracuse\
_average_gal"],row["utica_average_gal"]])

Tags: csvinpyjsonencodernewdatausr
2条回答

看来你连打开文件都有问题。 Python json to CSV

你被告知要使用json.load

dumps将对象转换为字符串。你想把JSON读入字典。你知道吗

因此,您需要loadJSON文件,并且可以同时打开两个文件

with open("Data.csv","w") as csvfile, open("rows.json?accessType=DOWNLOAD") as inputfile:
    data = json.load(inputfile)
    writer = csv.DictWriter(csvfile,...

另外,例如,考虑到JSON数据看起来像"fieldName" : "syracuse_average_gal",并且这是锡拉丘兹平均值的唯一出现,row["syracuse_average_gal"]是不正确的。你知道吗

仔细检查JSON并找出从最上面的括号解析它的方法

如果要读取JSON文件,应使用json.load而不是json.dumps

data = json.load(inputFile)

相关问题 更多 >