Python 实现常用数据格式转换代码与步骤
本文整理 Python 环境下常用的数据格式转换方法,涵盖 Jupyter Notebook 导出脚本、CSV 与 JSON 双向转换以及 CSV 导入 SQLite 数据库。代码基于标准库与常用扩展编写,附详细参数说明、执行结果核对方式与异常排查建议,便于快速集成至自动化处理流程。
Jupyter Notebook 导出为 Python 脚本
当需要将交互式分析笔记转化为可独立运行的工程代码时,可使用 nbformat 读取笔记本结构,并通过 PythonExporter 提取纯代码区块。操作前建议先备份原 .ipynb 文件,以防单元格顺序或渲染差异影响后续运行。
运行环境与准备:需提前安装依赖 pip install nbformat nbconvert。
import nbformat
from nbconvert import PythonExporter
# 指定输入路径并读取 Notebook 对象
notebook_filename = 'Builddata.ipynb' # 替换为你的 .ipynb 文件路径
with open(notebook_filename, 'r', encoding='utf-8') as notebook_file:
notebook_content = nbformat.read(notebook_file, as_version=4)
# 初始化导出器并提取代码字符串
python_exporter = PythonExporter()
python_code, _ = python_exporter.from_notebook_node(notebook_content)
# 生成同名 .py 文件并写入
python_filename = notebook_filename.replace('.ipynb', '.py')
with open(python_filename, 'w', encoding='utf-8') as python_file:
python_file.write(python_code)
print(f'Notebook converted to Python script: {python_filename}')
完成状态核对:控制台打印新文件名后,同级目录下会生成对应 .py 文件。使用编辑器打开可确认单元格内的 Markdown 已被剥离,仅保留逻辑代码。
CSV 文件自动建表导入 SQLite
利用 sqlite3 与 csv 模块,可逐行读取表格并动态生成 SQL 语句。此方法默认将所有字段映射为文本类型,适合字段结构统一或暂不进行复杂类型校验的数据入库场景。
import sqlite3
import csv
csv_file = '202103_LD.csv'
db_file = '202103_LD.db'
conn = sqlite3.connect(db_file)
cursor = conn.cursor()
with open(csv_file, mode='r', newline='', encoding='utf-8') as file:
reader = csv.reader(file)
headers = next(reader) # 获取表头作为列名
# 动态拼接建表语句(默认全列 TEXT 类型)
columns = ', '.join([f"{header} TEXT" for header in headers])
cursor.execute(f"CREATE TABLE IF NOT EXISTS data ({columns})")
# 批量插入数据
for row in reader:
placeholders = ', '.join(['?' for _ in headers])
insert_sql = f"INSERT INTO data ({', '.join(headers)}) VALUES ({placeholders})"
cursor.execute(insert_sql, row)
conn.commit()
conn.close()
print(f"数据成功从CSV文件导入到数据库 {db_file} 中!")
完成状态核对:运行后目录生成 .db 文件。可通过终端命令 sqlite3 202103_LD.db ".tables" 验证表是否创建,或使用客户端工具检查数据行数是否与 CSV 源文件一致。
CSV 与 JSON 双向序列化转换
JSON 与 CSV 是跨平台交换数据的常用载体。以下两段代码分别演示字典列表形式的双向转换,处理过程中会自动适配键值对与行列对齐。
第1步:CSV 读取并序列化为 JSON
import csv
import json
csv_file = 'data.csv'
json_file = 'data.json'
# 使用 DictReader 自动以首行为键构建字典列表
with open(csv_file, mode='r', newline='', encoding='utf-8') as csvf:
reader = csv.DictReader(csvf)
data = [row for row in reader]
# 写入 JSON 保持缩进与中文显示
with open(json_file, 'w', encoding='utf-8') as jsonf:
json.dump(data, jsonf, ensure_ascii=False, indent=4)
第2步:JSON 读取并反序列化为 CSV
import json
import csv
json_file = 'data.json'
csv_file = 'data.csv'
# 直接加载为字典列表
with open(json_file, 'r', encoding='utf-8') as jf:
data = json.load(jf)
# 根据首条记录的键生成表头并写入
with open(csv_file, mode='w', newline='', encoding='utf-8') as cf:
writer = csv.DictWriter(cf, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
完成状态核对:转换后打开目标文件,确认数据量未丢失且编码正常。若 JSON 中各对象键名不一致,DictWriter 会以第一条记录的键为准补全空值,需注意数据结构的一致性。
常见问题与维护建议
- 依赖管理:
nbformat属于第三方扩展,非 Python 内置包。生产环境使用前请确认已包含在虚拟环境依赖列表中。 - 大数据量处理:上述脚本均采用内存读取模式。若源文件超过数百 MB,建议改用迭代器(如
pandas分块读取或逐行流式写入),避免触发MemoryError。 - 字符编码适配:Windows 下部分 CSV 默认采用
gbk编码。若运行时报错UnicodeDecodeError,请将代码中的encoding='utf-8'替换为'gbk'或'utf-8-sig'。
以上就是 Python 实现常用数据格式转换的详细代码指南,更多关于 Python 自动化数据处理与文件读写技巧的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













