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

如何结合CSV数据与代码定义值生成字典并写入JSON文件?

实现CSV数据与代码自定义值结合并写入JSON文件

核心实现方案

以下是直接可用的完整代码,实现读取CSV数据、合并代码内预定义值、写入JSON文件的全流程:

import csv
import json

# 代码内定义的固定键值对
fixed_custom_values = {
    "data_source": "internal_csv",
    "processing_time": "2024-05-20",
    "is_valid": True
}

# 读取CSV并合并数据
processed_records = []
# 替换为你的CSV文件路径
with open("your_data.csv", mode="r", encoding="utf-8") as csv_file:
    # 自动用CSV表头作为字典键
    csv_reader = csv.DictReader(csv_file)
    for row in csv_reader:
        # 合并CSV行数据与自定义值,重复键时自定义值会覆盖CSV数据
        combined_record = {**row, **fixed_custom_values}
        processed_records.append(combined_record)

# 写入JSON文件
with open("output_result.json", mode="w", encoding="utf-8") as json_file:
    # indent=4格式化输出,ensure_ascii=False支持非ASCII字符
    json.dump(processed_records, json_file, indent=4, ensure_ascii=False)

关键细节说明

  • CSV读取:使用csv.DictReader可直接将CSV表头映射为字典的键,无需手动处理列索引,简化代码逻辑。
  • 字典合并:{**row, **fixed_custom_values}是Python合并字典的简洁写法,若CSV行数据与自定义值存在重复键,自定义值会覆盖CSV中的对应值;如需保留CSV的键值,调换顺序为{**fixed_custom_values, **row}即可。
  • JSON写入:indent=4让输出的JSON文件更易读,ensure_ascii=False确保中文、特殊字符等非ASCII内容正常保存。

特殊场景适配

场景1:CSV文件无表头

如果你的CSV没有表头,需手动指定列对应的键:

import csv
import json

fixed_values = {"record_type": "raw_data"}
# 手动定义每一列对应的键,顺序需与CSV列一致
csv_column_keys = ["user_id", "user_name", "registration_date"]

processed_data = []
with open("no_header_data.csv", mode="r", encoding="utf-8") as csv_file:
    csv_reader = csv.reader(csv_file)
    for row in csv_reader:
        # 将CSV行数据转为字典
        row_dict = dict(zip(csv_column_keys, row))
        combined_dict = {**row_dict, **fixed_values}
        processed_data.append(combined_dict)

with open("no_header_output.json", "w", encoding="utf-8") as f:
    json.dump(processed_data, f, indent=4)

场景2:生成单个合并字典(非列表)

如果需求是将CSV的键值对数据和自定义值合并成一个大字典(比如CSV是两列的键值格式):

import csv
import json

fixed_values = {"category": "system_config"}
csv_kv_data = {}

with open("key_value_csv.csv", mode="r", encoding="utf-8") as csv_file:
    csv_reader = csv.reader(csv_file)
    for key, value in csv_reader:
        csv_kv_data[key] = value

# 合并成单个字典
final_dict = {**csv_kv_data, **fixed_values}

with open("single_dict_output.json", "w", encoding="utf-8") as f:
    json.dump(final_dict, f, indent=4)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:50:18