0

我有一个包含 4 列(A、B、C、D)的 CSV 文件。像这样:

一种 C D
示例英文文本 翻译文本 语境 最长长度
示例英文文本 2 翻译文本 2 上下文 2 最大长度 2
示例英文文本 3 翻译文本 3 上下文 3 最大长度 3

我需要一个代码,将其转换为这个 JSON 文件:

{
  "Context": "Translated text",
  "Context 2": "Translated text 2",
  "Context 3": "Translated text 3"
}

我试过这个:

import csv
import json


def make_json(csvFilePath, jsonFilePath):
    
    data = {}
    
    with open(csvFilePath, encoding='utf-8') as csvf:
        csvReader = csv.DictReader(csvf)
        
        for rows in csvReader:
            
            key = rows["C"]
            data[key] = rows


    with open(jsonFilePath, 'w', encoding='utf-8') as jsonf:
        jsonf.write(json.dumps(data, indent=4))
        

csvFilePath = "main.csv"
jsonFilePath = "test.json"

make_json(csvFilePath, jsonFilePath)

但是有一个错误,我不确定这是最好的方法。

我怎样才能解决这个问题?

错误:

D:\Python\CSV to JSON>py csvtojson.py
Traceback (most recent call last):
  File "D:\Python\CSV to JSON\csvtojson.py", line 25, in <module>
    make_json(csvFilePath, jsonFilePath)
  File "D:\Python\CSV to JSON\csvtojson.py", line 14, in make_json
    key = rows["C"]
KeyError: 'C'

感谢您的帮助!

4

2 回答 2

1

这应该做-

import csv

with open('data.csv', 'r') as f:
    csv_data = csv.reader(f)
    json_data = {data[2]: data[1] for data in csv_data}
    
with open('data.json', 'w') as f:
    json.dump(json_data, f, indent=4)
于 2021-09-04T18:16:57.190 回答
0

你可以使用 Pandas 来实现它,你用很少的代码行就很晚了。

import pandas as pd
# Read the csv file into Python with help from Pandas
df = pd.read_csv('csv-file.csv')

# Work with your json data in Python
json_data = df.to_json(orient = 'records')

# Save your data into new json file
df.to_json("path\example.json", orient = 'records')

然后将 CSV 文件加载到 python 中并将其转换为 JSON,一切顺利!:)

如果您没有熊猫,只需将其放入

pip install pandas
于 2021-09-04T18:04:58.547 回答