[Python]导出在Excel中不会出现乱码的CSV文件


[Python]导出在Excel中不会出现乱码的CSV文件

如果添加

Byte Order Mark(BOM),则即使使用UTF-8在Excel中打开它,也可以创建不乱码的CSV。
输出文件时只需添加encoding='utf_8_sig

使用with open ~

请参阅此人的帖子。

使用pandas

添加encoding='utf-8-sig',如下所示。

1
2
3
4
import pandas as pd

df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
df.to_csv('./df.csv', encoding='utf_8_sig')

如果您忘记添加BOM

可以通过按下shell来使用BOM创建文件,如下所示。
在这里,您也可以在Excel中打开它而不会出现乱码。

1
cat <(printf "\xEF\xBB\xBF") without_bom.csv > with_bom.csv

确保为

without_bom.csvwith_bom.csv对应的部分提供不同的字符串。
如果提供相同的字符串,则该过程不会永远结束,并且原始文件将被破坏。
请注意