Python 实现常用数据格式转换代码与步骤

Theo
Theo
发布时间:2026-10-11| 4人浏览过
原创

本文整理 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 自动化数据处理与文件读写技巧的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。