Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:将JsonL转换为Json再转换为CSV_Python_Json_Csv_Type Conversion_Jsonlines - Fatal编程技术网

Python:将JsonL转换为Json再转换为CSV

Python:将JsonL转换为Json再转换为CSV,python,json,csv,type-conversion,jsonlines,Python,Json,Csv,Type Conversion,Jsonlines,目前正在使用jsonl文件,我打算将其转换为CSV格式,以便通过程序运行它。然而,我意识到最好是直接将其从json转换为CSV,我在下面编写了一段代码将json转换为CSV。但是,在运行此代码之前,我不确定如何将当前jsonl文件转换为所需的json格式。如果有人对我有任何解决办法,一定要让我知道!非常感谢您的阅读,并感谢所有我能得到的帮助 (仅供参考,我试图使用下面的json到csv转换器直接转换jsonl文件,但收到下面的错误消息:) 这是转换代码,希望对大家有所帮助 from json.d

目前正在使用jsonl文件,我打算将其转换为CSV格式,以便通过程序运行它。然而,我意识到最好是直接将其从json转换为CSV,我在下面编写了一段代码将json转换为CSV。但是,在运行此代码之前,我不确定如何将当前jsonl文件转换为所需的json格式。如果有人对我有任何解决办法,一定要让我知道!非常感谢您的阅读,并感谢所有我能得到的帮助

(仅供参考,我试图使用下面的json到csv转换器直接转换jsonl文件,但收到下面的错误消息:)

这是转换代码,希望对大家有所帮助

from json.decoder import JSONDecodeError
import pandas as pd
import sys
from flatten_json import flatten
import json

def main():
    if len(sys.argv) not in [1, 2]:
        sys.exit("Usage: python JsonCon.py [FILENAME.json] \n exitted")

    filename = sys.argv[1]
    print(f"Converting to CSV: {filename}")
    convertFile(filename)

def convertFile(filename):
    try:
        with open(filename) as file:
            jsString = json.load(file)
            dic_flat = [flatten(d) for d in jsString]
            df = pd.DataFrame(dic_flat)
            df.to_csv(f'{filename[:-5]}.csv')
    except JSONDecodeError as e:
        print(f'ERROR: {e.msg}')

if __name__ == "__main__":
    main()
导入json
导入csv
输入io
#从JSONL获取JSON对象
jsonl_data=“”{a:1,“b:123}\n{a:2,“b:234}\n{a:3,“b:345}\n”“”
json\u行=元组(json\u行
对于jsonl_data.splitlines()中的json_行
如果json_line.strip())
jsons_objs=tuple(json.loads(json_行)
对于json_行中的json_行)
#将它们写入CSV文件
伪文件=io.StringIO()
writer=csv.writer(假文件)
writer.writerow([“a”,“b”])
writerows((键的值,排序后的值(json_obj.items()))
用于json_obj(json_objs中的json_obj)
打印(伪文件.getvalue())

jsonl基本上是一个json序列,每行一个。因此,只需在jsonl的每一行上循环并应用您的脚本。然后连接结果。没有参数的to_csv将返回一个字符串。嗨@Yuri,你知道怎么做吗?我刚开始学习python,我真的希望在这过程中能得到一些指导。非常感谢你!jsons_作为_列表是missing@Yuri事实上,我确定了我的答案。
from json.decoder import JSONDecodeError
import pandas as pd
import sys
from flatten_json import flatten
import json

def main():
    if len(sys.argv) not in [1, 2]:
        sys.exit("Usage: python JsonCon.py [FILENAME.json] \n exitted")

    filename = sys.argv[1]
    print(f"Converting to CSV: {filename}")
    convertFile(filename)

def convertFile(filename):
    try:
        with open(filename) as file:
            jsString = json.load(file)
            dic_flat = [flatten(d) for d in jsString]
            df = pd.DataFrame(dic_flat)
            df.to_csv(f'{filename[:-5]}.csv')
    except JSONDecodeError as e:
        print(f'ERROR: {e.msg}')

if __name__ == "__main__":
    main()