我在一个文件夹中有大约800个json文件,我想将所有这些文件转换为csv格式,而且这些操作必须在不指定文件名的情况下完成。我的json文件非常嵌套,因此需要一个转换思路转换为csv格式。
json文件示例
[
{
'Extract_date': '2019-06-04'
},
{
'lat,lon': '0,0'
},
{
'current': [
{
'source': 'sg',
'value': 99.04
},
{
'source': 'meto',
'value': 99.04
}
],
'swell': [
{
'source': 'sg',
'value': 192.28
},
{
'source': 'noaa',
'value': 201.69
},
],
'Height': [
{
'source': 'sg',
'value': 0.4
},
{
'source': 'noaa',
'value': 0.36
},
],
'time': '2019-06-04T00:00:00+00:00',
'wind': [
{
'source': 'sg',
'value': 153.43
},
{
'source': 'noaa',
'value': 156.89
},
{
'source': 'icon',
'value': 153.43
}
],
'Speed': [
{
'source': 'sg',
'value': 4.92
},
{
'source': 'noaa',
'value': 5.46
},
{
'source': 'icon',
'value': 4.92
}
]}]
代码应从文件夹中检索json文件,然后为需要平整结构的json文件生成csv文件。
我尝试的代码仅用于一个文件,但它仅将数据显示为一行。
import os
import pandas as pd
import json
import numpy as np
data = []
os.chdir('/home/Documents/04.06.2019')
with open('new.json', encoding="utf8") as data_file:
for line in data_file:
data.append(json.loads(line))
dataframe = pd.DataFrame(data)
dataframe.to_csv("filename.csv", encoding='utf-8',index= False)
答案 0 :(得分:0)
您可以访问您的.json / .csv文件,如本文所示: How can I convert JSON to CSV?
要继续处理所有文件,可以遍历文件夹中的每个文件,例如
import os
INPUT_PATH ="...\path\to\file"
for file in os.listdir(INPUT_PATH):
if file.endswith('.json') or file.endswith('.JSON'):
INPUT_FILE = os.path.join(INPUT_PATH, file)
#File IO
_______ EDIT _________
您的json格式存在问题:
-字符串必须用双引号"str"
而不是单引号'str'
包围。为了避免这个问题,您可以使用
dataframe = json.loads(JSON_STRING.replace("'", '"'))
-在您的json的某些行(第29、40行)中,逗号过多,例如:
{
'source': 'noaa',
'value': 201.69
}, #<---!!!
],
'Height': [
{
'source': 'sg',
'value': 0.4
},
这些json文件是否由监视系统编写? ->它们都具有相同的格式吗?
在这种情况下,您可以(至少)以代码方式修改600个文件的格式问题。
请查看json模块文档(https://docs.python.org/3/library/json.html),以获取有关如何访问嵌套信息的信息。