# Python CSV转JSON方法 **Repository Path**: ren3016/python_csv_to_json ## Basic Information - **Project Name**: Python CSV转JSON方法 - **Description**: Python脚本,将CSV文件转换为JSON格式,使用第一行作为键名 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-26 - **Last Updated**: 2026-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: csv-json, json-csv ## README ## 把 csv 转 json 的命令: ```bash # 在终端中执行 py csv_to_json_to_one_line.py ``` 执行成功后, 把 csv/japanese_universities.csv 文件转为 json/japanese_universities.json *** ## 把 json 转 csv 的命令: ```bash # 在终端中执行 py json_to_csv.py ``` 执行成功后, 把 json/japanese_universities_dist.json 文件转为 csv/japanese_universities_new.csv *** # Python CSV转JSON方法 #### 介绍 Python脚本,将CSV文件转换为JSON格式,使用第一行作为键名 # 方法1:使用pandas(适合大数据) csv中行到json中也一行显示 ```bash # 安装pandas(如需要) pip install pandas ``` ```python import pandas as pd import json def csv_to_json_pandas(csv_file_path, json_file_path=None): """ 使用pandas将CSV转换为JSON数组格式 每个对象占一行,但保持标准JSON语法 参数: csv_file_path: CSV文件路径 json_file_path: 输出JSON文件路径(可选) """ # 读取CSV df = pd.read_csv(csv_file_path) # 将DataFrame转换为字典列表 records = df.to_dict(orient='records') if json_file_path: with open(json_file_path, 'w', encoding='utf-8') as f: # 写入数组开始 f.write('[\n') # 写入每条记录,每条记录占一行,用逗号分隔 for i, record in enumerate(records): json_line = json.dumps(record, ensure_ascii=False) # 如果不是最后一条,添加逗号 if i < len(records) - 1: f.write(' ' + json_line + ',\n') else: f.write(' ' + json_line + '\n') # 写入数组结束 f.write(']') print(f"JSON已保存到: {json_file_path}") return None else: # 返回格式化的JSON字符串 json_lines = ['['] for i, record in enumerate(records): json_line = json.dumps(record, ensure_ascii=False) if i < len(records) - 1: json_lines.append(' ' + json_line + ',') else: json_lines.append(' ' + json_line) json_lines.append(']') return '\n'.join(json_lines) # 使用示例 if __name__ == "__main__": csv_to_json_pandas('csv/japanese_universities.csv', 'json/japanese_universities_new.json') ``` # 方法2:使用csv模块 + json模块(标准库) ```python import csv import json def csv_to_json(csv_file_path, json_file_path=None): """ 将CSV文件转换为JSON,使用第一行作为键名 参数: csv_file_path: CSV文件路径 json_file_path: 输出JSON文件路径(可选,不提供则返回字符串) 返回: 如果json_file_path为None,返回JSON字符串;否则保存到文件 """ data = [] # 读取CSV文件 with open(csv_file_path, 'r', encoding='utf-8') as csv_file: csv_reader = csv.DictReader(csv_file) # 自动使用第一行作为键名 for row in csv_reader: data.append(row) # 转换为JSON if json_file_path: with open(json_file_path, 'w', encoding='utf-8') as json_file: json.dump(data, json_file, ensure_ascii=False, indent=2) print(f"JSON已保存到: {json_file_path}") return None else: return json.dumps(data, ensure_ascii=False, indent=2) # 使用示例 if __name__ == "__main__": # 输出为文件 csv_to_json('csv/japanese_universities.csv', 'json/japanese_universities.json') # 或者直接获取JSON字符串 # json_str = csv_to_json('data.csv') # print(json_str) ``` # 方法3:使用pandas(适合大数据) ```python import pandas as pd import json def csv_to_json_pandas(csv_file_path, json_file_path=None): """ 使用pandas将CSV转换为JSON 参数: csv_file_path: CSV文件路径 json_file_path: 输出JSON文件路径(可选) """ # 读取CSV df = pd.read_csv(csv_file_path) # 转换为JSON(记录方向,每条记录为一个对象) json_data = df.to_json(orient='records', force_ascii=False, indent=2) if json_file_path: with open(json_file_path, 'w', encoding='utf-8') as f: f.write(json_data) print(f"JSON已保存到: {json_file_path}") return None else: return json_data # 使用示例 if __name__ == "__main__": csv_to_json_pandas('csv/japanese_universities.csv', 'json/japanese_universities.json') ``` # 方法4:自定义处理特殊类型 ```python import csv import json from datetime import datetime def csv_to_json_advanced(csv_file_path, json_file_path=None): """ 高级转换,支持自定义类型处理 """ data = [] with open(csv_file_path, 'r', encoding='utf-8') as csv_file: # 读取表头 csv_reader = csv.reader(csv_file) headers = next(csv_reader) # 处理数据行 for row in csv_reader: row_dict = {} for i, value in enumerate(row): # 尝试转换数字 if value.isdigit(): row_dict[headers[i]] = int(value) elif value.replace('.', '', 1).isdigit(): # 浮点数 row_dict[headers[i]] = float(value) elif value.lower() in ('true', 'false'): # 布尔值 row_dict[headers[i]] = value.lower() == 'true' elif value == 'null' or value == 'None': row_dict[headers[i]] = None else: row_dict[headers[i]] = value data.append(row_dict) # 保存为JSON if json_file_path: with open(json_file_path, 'w', encoding='utf-8') as json_file: json.dump(data, json_file, ensure_ascii=False, indent=2) return None return json.dumps(data, ensure_ascii=False, indent=2) ``` *** # 示例CSV文件(data.csv) ```csv name,age,city,score 张三,25,北京,85.5 李四,30,上海,92.3 王五,28,深圳,78.9 ``` # 转换后的JSON输出 ```json [ { "name": "张三", "age": "25", "city": "北京", "score": "85.5" }, { "name": "李四", "age": "30", "city": "上海", "score": "92.3" }, { "name": "王五", "age": "28", "city": "深圳", "score": "78.9" } ] ``` *** # 命令行快速转换(使用内置工具) ```bash # 使用python一行命令 python -c "import csv, json; print(json.dumps(list(csv.DictReader(open('data.csv'))), indent=2))" > output.json ``` *** # ★ 仓库克隆到本地,以下任选一种 ## 本仓库网址: https://gitee.com/ren3016/python_csv_to_json/ ## 方式一、在终端中使用 HTTPS 方式: ```bash git clone https://gitee.com/ren3016/python_csv_to_json.git ``` ## 方式二、在终端中使用 SSH 方式: ```bash git clone git@gitee.com:ren3016/python_csv_to_json.git ```