Skip to main content
 首页 » 编程设计

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

2025年05月04日22luoye11

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

Lp.;Name;Surname;Desc;Unit;Comment 
1;Jan;Makowski;Inf;km; 
2;Anna;Nowak;Pts;km;Brak reakcji 

如果您看到 '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"...] 

我是 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() 

请您参考如下方法:

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

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) 

输出:

[{"Comment": "", "Surname": "Makowski", "Name": "Jan", "Lp.": "1", "Unit": "km", "Desc": "Inf"}, {"Comment": "Brak reakcji", "Surname": "Nowak", "Name": "Anna", "Lp.": "2", "Unit": "km", "Desc": "Pts"}]