【问题标题】:To convert json files from folder to its csv format将文件夹中的 json 文件转换为其 csv 格式
【发布时间】:2019-06-06 09:22:41
【问题描述】:

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

【问题讨论】:

  • 你尝试了什么?显示您的代码。显示扁平结构的示例。
  • 请描述您做了什么以及您遇到的问题。正如所写的那样,就像您要求某人为您编写一个实用程序,这完全是题外话。
  • 想要的输出是什么?检查 jq 及其@csv 格式化程序
  • 我尝试过的代码只用于一个文件,但它只给我一行数据。
  • 想要的输出是 json 文件必须转换成它的 csv 格式 @lojza

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


【解决方案1】:

您可以访问您的 .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

_______编辑_________

你的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) 以获取有关如何访问嵌套信息的信息。

【讨论】:

  • 所以我需要替换所有json文件的引号@Mig B
猜你喜欢
  • 2018-08-15
  • 1970-01-01
  • 2018-03-06
  • 2019-08-15
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
相关资源
最近更新 更多