Python办公笔记——将csv文件转Json

目录

专栏导读

🌸 欢迎来到Python办公自动化专栏---Python处理办公问题,解放您的双手

🏳️‍🌈 博客主页:请点击------> 一晌小贪欢的博客主页求关注

👍 该系列文章专栏:请点击------>Python办公自动化专栏求订阅

🕷 此外还有爬虫专栏:请点击------>Python爬虫基础专栏求订阅

📕 此外还有python基础专栏:请点击------>Python基础学习专栏求订阅

文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

❤️ 欢迎各位佬关注! ❤️

1、背景

我们有时候经常会将csv文件转为json数据(本地),然后加载json数据作为匹配项,可以将里面的数据匹配给其他的表格中

2、库的安装

用途 安装
无需安装 无需安装 无需安装

3、代码1---自定义表头

数字类型可累加

python 复制代码
def write_json_cjb_last_month(csv_file_path):
    last_cjb = {}
    with open(csv_file_path, 'r') as f:
        rows = csv.reader(f)
        header = next(rows)
        结算账号_index = header.index('结算账号-CMDM')
        地区_index = header.index('结算归属地区.1')
        小组_index = header.index('小组')
        应收金额_index = header.index('应收金额')

        for row in rows:
            结算账号 = row[结算账号_index]
            应收金额 = float(row[应收金额_index]) if row[应收金额_index].strip() else 0  # 转换为数字并处理空值

            if 结算账号 in last_cjb:
                # 如果结算账号已存在,累加应收金额
                last_cjb[结算账号]["应收金额"] = str(float(last_cjb[结算账号]["应收金额"]) + 应收金额)
            else:
                # 如果是新的结算账号,创建新记录
                last_cjb[结算账号] = {
                    "地区": row[地区_index],
                    "小组": row[小组_index],
                    "应收金额": str(应收金额)
                }

    with open('json数据/data.json', 'w', encoding='utf-8') as f:
        json.dump(last_cjb, f, ensure_ascii=False, indent=4)

write_json_cjb_last_month(csv_file_path)

4、代码2---全字段

python 复制代码
def csv_to_json(csv_file_path):
    with open(csv_file_path, 'r',encoding='utf-8') as f:
        reader = csv.reader(f)
        header = next(reader)
        data = [dict(zip(header, row)) for row in reader]
    with open('data.json', 'w',encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False)


csv_to_json(file_name)

5、代码3---全字段

python 复制代码
def csv_to_json(csv_file_path, json_file_path):
    # 使用 DictReader 直接将每一行解析为字典
    with open(csv_file_path, mode='r', encoding='utf-8', newline='') as csvfile:
        reader = csv.DictReader(csvfile)
        # 打开 JSON 文件,并分块写入
        with open(json_file_path, mode='w', encoding='utf-8') as jsonfile:
            # 增加 JSON 数组的开头
            jsonfile.write('[')
            first_line = True
            for row in reader:
                # 分块写入 JSON,避免一次性将所有数据加载进内存
                if not first_line:
                    jsonfile.write(',\n')
                json.dump(row, jsonfile, ensure_ascii=False)
                first_line = False
            # 结束 JSON 数组
            jsonfile.write('\n]')

# 执行 CSV 转 JSON 的操作
csv_to_json(file_name, json_file)

# 读取生成的 JSON 文件进行验证
with open(json_file, mode='r', encoding='utf-8') as f:
    data = json.load(f)
    for i in data:
        print(i)

总结

希望对初学者有帮助

致力于办公自动化的小小程序员一枚

希望能得到大家的【一个免费关注】!感谢

求个 🤞 关注 🤞

此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

求个 ❤️ 喜欢 ❤️

此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

求个 👍 收藏 👍

此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

相关推荐
华清远见IT开放实验室11 分钟前
【每天学点AI】实战仿射变换在人工智能图像处理中的应用
图像处理·人工智能·python·opencv·仿射变换
码界筑梦坊38 分钟前
基于Flask的历史空难数据可视化分析系统的设计与实现
python·信息可视化·flask·毕业设计
声网43 分钟前
a16z 最新 Voice AI 报告:语音将成为关键切入点,而非最终产品本身丨 Voice AI 学习笔记
人工智能·笔记·学习
萧鼎44 分钟前
使用Python的Tabulate库优雅地格式化表格数据
python
程序员小远1 小时前
接口自动化测试框架(pytest+allure+aiohttp+ 用例自动生成)
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
钮钴禄·爱因斯晨1 小时前
赛博算命之 ”梅花易数“ 的 “JAVA“ 实现 ——从玄学到科学的探索
java·开发语言·python
云边有个稻草人2 小时前
DeepSeek与人工智能的结合:探索搜索技术的未来
人工智能·笔记·科技·算法·deepseek
进阶的小叮当2 小时前
Vue+Node调用Python并将结果显示到Web页面中
vue.js·python·node.js
Perfect_www2 小时前
Jupyter Notebook自动保存失败等问题的解决
ide·python·jupyter
好想写博客3 小时前
[深度学习]神经网络-回归项目
pytorch·python·深度学习·神经网络·回归·numpy·pandas