将json文件从文件夹转换为csv格式

时间:2019-06-06 09:22:41

标签: python json python-3.x csv python-3.6

我在一个文件夹中有大约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)

1 个答案:

答案 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'包围。为了避免这个问题,您可以使用

替换已加载的json字符串的引号。
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),以获取有关如何访问嵌套信息的信息。