当前位置: 首页 > news >正文

为什么python处理csv文件将某个值替换成另一个值并另存后,csv文件的大小减小了一半

这是个非常常见但容易让人疑惑的问题。在 Python 中处理 CSV 文件,将某个值替换成另一个值并另存后,发现 文件大小大幅减少(减半),这并不一定是异常,背后通常有以下几种可能原因:


✅ 主要原因分析

1. 🔁 替换的值更短或更频繁 → 文件整体变小

如果你将 大量长字符串替换为短字符串,或者清除了很多内容,自然会减小文件体积。

示例:
# 替换长字符串为短字符串
row['status'] = row['status'].replace("This is a long string", "short")
  • 原内容 "This is a long string" = 23 字节
  • 替换后 "short" = 5 字节
  • 替换 10,000 行,节省近 180 KB

2. 🧹 Python 自动移除了一些无用字符或空白

  • 原始 CSV 文件可能带有:

    • 空行
    • 空格
    • 多余的逗号
    • BOM 标记
    • 非标准换行符(如 \r\r\n

Python 读写 CSV 时,标准化了格式,导致体积变小:

with open('file.csv', newline='', encoding='utf-8') as f:reader = csv.DictReader(f)

这会统一换行、去除空字段等。


3. 🔄 原文件是 Excel导出带格式的CSV

有些 Excel 导出的 CSV 会携带:

  • 字节顺序标记(BOM)
  • 特殊编码(如 UTF-16、UTF-8-SIG)
  • 多余的引号

Python 以 UTF-8 重写后,文件变干净,体积自然减小。


4. 🧵 Python 默认 不重复输出空列

如果你用 DictWriter 只写入了你指定的列,而不是原始 CSV 的全部列,也可能导致文件缩小:

writer = csv.DictWriter(outfile, fieldnames=["id", "status"])

这种方式不会保留原 CSV 中未指定的其他列。


🧪 建议你检查:

你可以比较原始和处理后的 CSV 文件的以下几个方面:

wc -l original.csv processed.csv       # 行数
wc -c original.csv processed.csv       # 字节大小
diff original.csv processed.csv        # 差异对比

或者用 Python 分析内容差异:

import pandas as pd
df1 = pd.read_csv("original.csv")
df2 = pd.read_csv("processed.csv")
print(df1.shape, df2.shape)

✅ 总结

原因是否正常建议
替换文本导致内容变短✅ 正常无需担心
空行/空白字符被自动清理✅ 正常更干净
字符编码或格式被优化✅ 正常文件更标准
输出时字段减少⚠️ 留意若需保留全部列,指定完整 fieldnames

http://www.lqws.cn/news/544681.html

相关文章:

  • Nginx 与 Apache:有什么区别?哪种服务器最适合您?
  • 【数据挖掘】数据采集和预处理
  • 如何确保京东商品数据采集的准确性和及时性?
  • 【lua】Linux上安装lua和luarocks包管理工具
  • 提升AI准确性的关键:精准添加上下文
  • 【NodeJs】【npm】npm安装electron报错
  • Python Async 编程快速入门 | 超简明异步协程指南
  • C++常用算法解析:sort、find、for_each、copy
  • 阶段二开始-第一章—8天Python从入门到精通【itheima】-116节(封装)
  • cuda编程笔记(5)--原子操作
  • UI前端与数字孪生结合案例分享:智慧零售的可视化解决方案
  • 北京燃气集团管道腐蚀智能预测实践:LSTM算法驱动能源设施安全升级
  • VSCode中创建和生成动态库项目
  • 智能呼叫系统五大核心模式解析
  • 使用mitmdump实现高效实时抓包处理:从原理到实践
  • 技术博客:如何用针孔相机模型理解图像
  • 基于Redis分布式的限流
  • 一款专业的顽固软件卸载工具
  • ubuntu下利用Qt添加相机设备并运行arm程序
  • GO 语言学习 之 变量和常量
  • 神经形态计算与人工智能的融合:从生物启发到智能跃迁的IT新纪元
  • 本地部署Dify+Ragflow及使用(一)
  • PHP语法基础篇(六):数组
  • 通达信 稳定盈利多维度趋势分析系统
  • 鸿蒙OS开发IoT控制应用:从入门到实践
  • 概述-2-MySQL安装及启动-1-Dcoker安装MySQL
  • vue将页面导出pdf,vue导出pdf ,使用html2canvas和jspdf组件
  • Jmeter并发测试和持续性压测
  • 手机屏亮点缺陷修复及相关液晶线路激光修复原理
  • 利用云雾自动化在智能无人水面航行器中实现自主碰撞检测和分类