尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
影刀RPA CSV文件高级处理:大文件与编码
影刀RPA CSV文件高级处理大文件与编码署名林焱什么情况用什么RPA处理数据时CSV是比Excel更轻量的选择——不需要安装Excel读写速度快适合大数据量。但CSV也有编码问题和格式陷阱。场景推荐方式特点普通CSV读写csv模块 / pandas简单直接大文件处理csv逐行读 / pandas chunk内存友好编码问题指定encoding参数解决乱码怎么做一基础读写importcsv# 写入CSVdata[[姓名,年龄,部门],[张三,28,研发部],[李四,35,市场部],[王五,24,财务部],]withopen(rD:\数据\员工.csv,w,encodingutf-8-sig,newline)asf:writercsv.writer(f)writer.writerows(data)# 读取CSVwithopen(rD:\数据\员工.csv,r,encodingutf-8-sig)asf:readercsv.reader(f)headersnext(reader)# 第一行是表头forrowinreader:print(f{row[0]}|{row[1]}|{row[2]})二用DictReader/DictWriter拼多多店群自动化报活动上架importcsv# 写入字典模式employees[{姓名:张三,年龄:28,部门:研发部},{姓名:李四,年龄:35,部门:市场部},]withopen(rD:\数据\员工.csv,w,encodingutf-8-sig,newline)asf:fieldnames[姓名,年龄,部门]writercsv.DictWriter(f,fieldnamesfieldnames)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6b4600fc7c494ddc9d263f99b090559c.png#pic_center)writer.writeheader()writer.writerows(employees)# 读取字典模式withopen(rD:\数据\员工.csv,r,encodingutf-8-sig)asf:readercsv.DictReader(f)forrowinreader:print(f{row[姓名]}-{row[部门]})三pandas处理CSVimportpandasaspd# 读取dfpd.read_csv(rD:\数据\员工.csv,encodingutf-8-sig)print(df.head())print(f共{len(df)}行)# 筛选devdf[df[部门]研发部]print(dev)# 保存dev.to_csv(rD:\数据\研发部员工.csv,indexFalse,encodingutf-8-sig)四大文件逐行处理importcsv# 处理大文件逐行读取不全部加载到内存input_pathrD:\数据\大数据.csvoutput_pathrD:\数据\处理后.csvwithopen(input_path,r,encodingutf-8-sig)asfin,\open(output_path,w,encodingutf-8-sig,newline)asfout:readercsv.DictReader(fin)writercsv.DictWriter(fout,fieldnamesreader.fieldnames[处理状态])writer.writeheader()count0forrowinreader:# 逐行处理row[处理状态]已处理ifrow.get(金额)else跳过writer.writerow(row)count1ifcount%100000:print(f已处理{count}行)print(f完成共处理{count}行)五pandas分块读取importpandasaspd# 分块读取大CSVchunk_size10000csv_pathrD:\数据\百万数据.csv# 方式1逐块处理results[]forchunkinpd.read_csv(csv_path,chunksizechunk_size,encodingutf-8-sig):# 在每块上做聚合计算summarychunk.groupby(部门)[金额].sum()results.append(summary)print(f处理了{len(chunk)}行)# 合并所有块的结果finalpd.concat(results).groupby(level0).sum()print(final)完整流程CSV数据清洗管道importcsvimportosfromdatetimeimportdatetime# yd_input: input_path, output_pathinput_pathyd_input.get(input_path,rD:\数据\原始数据.csv)output_pathyd_input.get(output_path,rD:\数据\清洗结果.csv)# 自动检测编码defdetect_encoding(file_path):尝试不同编码打开文件encodings[utf-8-sig,utf-8,gbk,gb2312,gb18030,latin-1]forencinencodings:try:withopen(file_path,r,encodingenc)asf:f.read(1024)# 尝试读一小段returnencexcept(UnicodeDecodeError,UnicodeError):continuereturnutf-8-sig# 默认encodingdetect_encoding(input_path)print(f检测到编码:{encoding})# 处理数据stats{total:0,valid:0,invalid:0,duplicates:0}seen_keysset()withopen(input_path,r,encodingencoding)asfin,\open(output_path,w,encodingutf-8-sig,newline)asfout:readercsv.DictReader(fin)# 输出字段output_fieldslist(reader.fieldnames)[清洗状态,清洗时间]writercsv.DictWriter(fout,fieldnamesoutput_fields)writer.writeheader()forrowinreader:stats[total]1# 清洗1去空行ifnotany(str(v).strip()forvinrow.values()):stats[invalid]1continue# 清洗2去重以某列为keykeyf{row.get(订单号,)}_{row.get(日期,)}ifkeyinseen_keys:stats[duplicates]1continueseen_keys.add(key)# 清洗3字段格式化fork,vinrow.items():ifv:row[k]str(v).strip()# 去除金额中的逗号和if金额inkor价格ink:row[k]str(v).replace(,).replace(,,).strip()# 标记状态row[清洗状态]有效row[清洗时间]datetime.now().strftime(%Y-%m-%d %H:%M:%S)writer.writerow(row)stats[valid]1print(f总计:{stats[total]}, 有效:{stats[valid]}, 无效:{stats[invalid]}, 重复:{stats[duplicates]})yd_output{status:ok,stats:stats,encoding:encoding}有什么坑坑一CSV打开中文乱码现象用Python写入的UTF-8编码CSV用Excel打开后中文乱码。原因Excel默认用ANSI编码中文系统下是GBK打开CSVUTF-8编码的文件没有BOM头时Excel无法正确识别。解决写入时用utf-8-sig编码带BOM头# 正确用utf-8-sig带BOMwithopen(data.csv,w,encodingutf-8-sig,newline)asf:writercsv.writer(f)writer.writerows(data)# 读取时也用utf-8-sig自动处理BOMwithopen(data.csv,r,encodingutf-8-sig)asf:readercsv.reader(f)# 错误用utf-8无BOMExcel打开乱码# with open(data.csv, w, encodingutf-8, newline) as f: ❌坑二字段中包含逗号导致列错位现象某字段值是北京,上海CSV打开后北京和上海被分成两列。TEMU店群矩阵自动化运营核价报活动原因CSV用逗号分隔字段字段值中的逗号需要用引号包裹。解决csv模块自动处理引号但手动拼接字符串时需要注意importcsv# csv.writer自动处理包含逗号的字段会自动加引号data[张三,28,北京,上海]withopen(data.csv,w,encodingutf-8-sig,newline)asf:writercsv.writer(f)writer.writerow(data)# 实际写入: 张三,28,北京,上海 ← 自动加了引号# 错误手动拼接# line ,.join(data) ❌ 张三,28,北京,上海 → 4列# f.write(line \n)坑三字段中包含换行符现象CSV某个字段包含换行符读取后行数变多了。原因CSV中带引号的字段可以包含换行符但某些简易解析器不支持。解决用csv模块支持引号内换行或预处理去掉换行importcsv# csv模块正确处理引号内换行withopen(data.csv,r,encodingutf-8-sig)asf:readercsv.reader(f)forrowinreader:print(row)# 即使字段中有换行也能正确读取为一行# 预处理去掉字段中的换行符forrowindata:foriinrange(len(row)):row[i]str(row[i]).replace(\n, ).replace(\r,)坑四CSV文件末尾空行过多现象用csv.writer写入后文件每行后面多了一个空行。原因Windows下open默认的换行符处理导致\r\n被写成\r\r\n。解决写入时加newline参数# 正确加newlinewithopen(data.csv,w,encodingutf-8-sig,newline)asf:writercsv.writer(f)writer.writerows(data)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f05b6e2cce6a4122a171d4373bbceb61.png#pic_center)# 错误不加newline# with open(data.csv, w, encodingutf-8-sig) as f: ❌ 会有多余空行# writer csv.writer(f)
RELATED

相关推荐

以太网MAC帧深度解析:从48位地址到3类帧(单播/广播/组播)的Wireshark鉴别

以太网MAC帧深度解析:从48位地址到3类帧(单播/广播/组播)的Wireshark鉴别

以太网MAC帧深度解析:从48位地址到3类帧的Wireshark实战鉴别1. 以太网MAC帧的底层架构以太网作为现代局域网的基石,其数据封装方式直接影响着网络通信的效率与可靠性。MAC帧是以太网数据链路层的传输单元,理解其结构是网络分析的入门必修课。…

📅 2026/11/10 16:35:12
MTKClient终极指南:三步轻松掌握联发科设备刷机与救砖

MTKClient终极指南:三步轻松掌握联发科设备刷机与救砖

MTKClient终极指南:三步轻松掌握联发科设备刷机与救砖 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient是一款专为联发科芯片设备设计的开源刷机与调试工具&#xff0c…

📅 2026/10/7 2:21:39
产品说明书翻译成英文怎么保留排版?PDF、Word、外贸资料处理清单

产品说明书翻译成英文怎么保留排版?PDF、Word、外贸资料处理清单

产品说明书翻译成英文时,不建议只检查译文是否准确。说明书、产品手册、外贸产品资料通常包含步骤图、参数表、警示语、页码、图注、二维码和多栏排版,翻译后是否还能交付,取决于文字、结构和版式是否一起处理好。 实操检查流程 步骤一&#…

📅 2026/10/7 6:49:14
MORE NEWS

更多资讯

📰

昆明何处学电工证?学历不高也能报!官方报名入口全攻略

昆明何处学电工证?学历不高也能报!官方报名入口全攻略 你是不是也担心自己学历不够,考不了电工证?别慌!今天我就给你讲讲昆明哪里能学电工证,怎么操作,还有官方报名入口在哪,全都给你安排得明明白白。 案例背景:一个低压电工在昆明的求职之路…

📰

昆山电工证在哪里年审的良心建议:实操考试心里没底怕挂科

昆山电工证在哪里年审的良心建议:实操考试心里没底怕挂科 你是不是也这样,一想到要考电工证的实操考试就紧张得不行,生怕操作不当挂科?这事儿真的太正常了,尤其是咱们这些新手或者想转行的,面对那些专业设备和流程,心里没底是人之常情。今天就来聊聊…

📰

梅陇镇电工证复审遇上2026河南最新政策怎么办

梅陇镇电工证复审遇上2026河南最新政策怎么办 证书过期了不知道怎么复审延期,这事儿真的让不少人头疼。特别是像你这样在梅陇镇从事电工工作的朋友,电工证要是过期了,不仅影响日常工作,还可能面临被处罚的风险。2026河南最新政策出台后,很多细节…

📰

鄢陵县电工证报名值不值得考?外省证能转吗?

鄢陵县电工证报名值不值得考?外省证能转吗? 之前考的证在外省能不能转过来?这是很多已经在外地工作、准备回鄢陵发展的朋友最关心的问题。特别是在当前就业市场对技能型人才需求加大的背景下, 鄢陵县电工证报名…

📰

电器场要电工证吗 电工证怎么考和电子证书怎么领

电器场要电工证吗 电工证怎么考和电子证书怎么领 工地太忙根本没时间复习考试,这几乎是所有特种作业人员的真实写照。尤其是像电器场这种对电力操作要求高的地方, 电工证 几乎是入场的“门槛证”。别以为有经验就能豁免考试,现在连 电子证书…

📰

低压电工证考试分哪些 在哪考别再被中介坑了

低压电工证考试分哪些 在哪考别再被中介坑了 不知道去哪报名怕被中介坑?低压电工证考试分哪些?这是很多想进入电力行业或者已经在一线工作的朋友们最关心的问题。别再被那些打着“包过”“保证”旗号的中介骗了,自己了解清楚流程和考试内容才是正道。本文…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬