You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python从CSV提取元素并转换为JSON的问题求助

CSV转JSON的问题解决方法

一、解决csv.reader输出单元素列表的问题

你的CSV文件使用**分号;**作为分隔符,但csv.reader默认以逗号,为分隔符,所以才会把整行当作单个元素。只需指定delimiter=';'参数即可正确拆分:

import csv
# 注意路径用双反斜杠或原始字符串避免转义
with open(r'X:\data.csv', 'rt', encoding='utf-8') as f:
    data = csv.reader(f, delimiter=';')
    for row in data:
        print(row)

运行后会输出拆分后的多元素列表,比如['Python', 'Guido van Rossum', '1991', '.py']。

二、修复readlines()迭代异常的问题

你用readlines()手动拆分的方法能生成结果,但迭代异常大概率是因为空行、格式不匹配的行导致的。可以添加空行过滤、元素数量校验来避免:

import json

with open(file, 'r', encoding='utf-8') as in_file:
    lines = in_file.readlines()
    out_filename_a = f"{vid_name}.json"
    data_list = []
    
    # 提取表头(假设第一行是表头)
    headers = lines[0].strip().split(';')
    
    for line in lines[1:]:
        line = line.strip()
        # 跳过空行
        if not line:
            continue
        raw_list = line.split(';')
        # 校验元素数量和表头一致,避免索引错误
        if len(raw_list) == len(headers):
            data_dict = dict(zip(headers, raw_list))
            data_list.append(data_dict)
        else:
            print(f"跳过格式错误的行: {line}")

# 写入JSON文件
with open(out_filename_a, 'w', encoding='utf-8') as json_file:
    json.dump(data_list, json_file, indent=4, ensure_ascii=False)

三、更高效的CSV转JSON方案

推荐使用csv.DictReader,它会自动把表头作为字典的键,直接生成可序列化的字典列表,代码更简洁:

import csv
import json

with open(r'X:\data.csv', 'r', encoding='utf-8') as csv_file:
    # 指定分号分隔符,自动读取表头
    csv_reader = csv.DictReader(csv_file, delimiter=';')
    # 转换为字典列表
    data_list = list(csv_reader)

# 写入格式化的JSON文件
with open('output.json', 'w', encoding='utf-8') as json_file:
    json.dump(data_list, json_file, indent=4, ensure_ascii=False)
  • indent=4让JSON格式更美观
  • ensure_ascii=False支持中文等非ASCII字符

内容的提问来源于stack exchange,提问作者Abhinav Bhattacharya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 03:54:15