将数据从 .csv 文件转换为 .json - Python

Cof*_*eye 1 python csv json data-conversion format-conversion

我需要将数据从我的csv文件转换为我要使用的文件.js

Lp.;Name;Surname;Desc;Unit;Comment
1;Jan;Makowski;Inf;km;
2;Anna;Nowak;Pts;km;Brak reakcji
Run Code Online (Sandbox Code Playgroud)

如果你能看到列'comment'并不总是有记录,我需要保持这种方式。同样在数据之间,我还需要设置许多选项卡。

在此处输入图片说明

我有一个文件,我现在正在处理,但它按行显示我的数据,例如:

[{"Lp.;Name;Surname;Desc;Unit;Comment": "1;Jan;Makowski;Inf;km;"}, {"Lp.;Name;Surname;Desc;Unit;Comment": "2;Anna;Nowak;Pts;km;Brak reakcji"...]
Run Code Online (Sandbox Code Playgroud)

我是 python 的新手,我不知道如何定义我需要得到的东西。

@@ 编辑我设法做到了...

import json
import csv

# Deklaracja danych
fieldnames = ("Lp.", "Name", "Surname", "Desc", "Unit", "Comment")

#  Otwieranie plików
with open('file.csv', 'r', encoding = "utf8") as csvfile:
    reader = csv.DictReader(csvfile) # ,fieldnames)
    rows = list(reader)

# Zamykamy plik
csvfile.close()

# Tworzymy plik z danych
with open('file.json', 'w', encoding = "utf8") as jsonfile:
    json.dump(rows,jsonfile)
    # jsonfile.write(s.replace(';', '/t'))
# Zamykamy plik
csvfile.close()
Run Code Online (Sandbox Code Playgroud)

Aru*_*run 6

我认为这是你的答案,这可能不是最好的方法,但它可以给你结果。

import csv
import json
with open('file.csv', 'r') as f:
    reader = csv.reader(f, delimiter=';')
    data_list = list()
    for row in reader:
        data_list.append(row)
data = [dict(zip(data_list[0],row)) for row in data_list]
data.pop(0)
s = json.dumps(data)
print (s)
Run Code Online (Sandbox Code Playgroud)

输出:

[{"Comment": "", "Surname": "Makowski", "Name": "Jan", "Lp.": "1", "Unit": "km", "Desc": "Inf"}, {"Comment": "Brak reakcji", "Surname": "Nowak", "Name": "Anna", "Lp.": "2", "Unit": "km", "Desc": "Pts"}]
Run Code Online (Sandbox Code Playgroud)