如何改变CSV文件的编码

在Jupyter notebook读取含有中文的csv文件的时候常常遇到编码错误,因此就想把csv文件编码改为utf-8编码方式,用excel打开另存为utf-8格式没法解决问题,从百度搜来的方法如下:

本文方法来自百度经验:首先,将.csv文件保存一下,然后鼠标右击打开方式记事本。然后,以记事本的方式打开了。文件-另存为 这时弹出一个窗口,右下方,编码,这时候你就可以选择自己想要的编码格式,然后保存,就可以了。


### 更改CSV文件编码的方法 为了确保CSV文件能够被正确读取而不出现乱码问题,在Python中可以采用多种方法来更改编码格式。一种常见的方式是利用`pandas`库处理数据,结合`chardet`检测原始编码,并最终将其转换为目标编码UTF-8。 #### 方法一:使用Pandas和Chardet自动识别并转换编码 首先安装必要的包: ```bash pip install pandas chardet openpyxl ``` 接着编写如下脚本实现批量转换功能: ```python import os import pandas as pd import chardet def detect_encoding(file_path): with open(file_path, 'rb') as f: raw_data = f.read() result = chardet.detect(raw_data) encoding = result['encoding'] return encoding def convert_csv_to_excel(csv_file, excel_file): df = pd.read_csv(csv_file, encoding=detect_encoding(csv_file)) writer = pd.ExcelWriter(excel_file, engine='openpyxl') df.to_excel(writer, index=False) writer.save() input_folder = './csv_files/' # CSV 文件所在目录 output_folder = './excel_files/' # Excel 输出目录 if not os.path.exists(output_folder): os.makedirs(output_folder) for filename in os.listdir(input_folder): if filename.endswith('.csv'): csv_filepath = os.path.join(input_folder, filename) excel_filename = os.path.splitext(filename)[0] + '.xlsx' excel_filepath = os.path.join(output_folder, excel_filename) convert_csv_to_excel(csv_filepath, excel_filepath) ``` 此代码片段实现了从指定路径下的所有`.csv`文件读取内容,先尝试探测源文件的实际编码,之后以UTF-8的形式写入新的Excel文件中[^1]。 对于特定情况下遇到的Mac环境下读取CSV文件时可能出现的编码错误,可以在Python脚本的第一行添加编码声明语句,例如 `# -*- coding: utf-8 -*-` 或者 `#coding=utf-8` 来指明整个文档使用的默认编码UTF-8[^2]。 当Office应用程序打开经过上述操作后的CSV文件仍然存在乱码现象时,则可能是因为缺少BOM(Byte Order Mark),此时应考虑将参数设置为`utf_8_sig`而非简单的`utf-8`,这会在文件头部加上特殊的标记帮助某些软件更好地解析文件中的字符[^3]。 另外值得注意的是,在不同操作系统之间传输文本文件时也可能因为各自支持的不同字符集而导致兼容性问题;因此建议尽可能统一使用较为通用和支持范围更广的编码标准——即UTF-8作为目标编码方案[^4]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值