我想用'\ t'分隔符将一些DataFrame数据保存到csv文件,并且因为数据中有中文字符所以使用utf-8-sig
编码。但遇到一个问题,当utf-8-sig
编码和'\ t'分隔符时,Excel无法正确自动加载列。
首先,代码如下:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': ['a', 'b\tc', '你好', 'test code']})
# case1
df.to_csv('case1.csv', encoding='utf-8', index=False)
# case2
df.to_csv('case2.csv', encoding='utf-8-sig', index=False)
# case3
df.to_csv('case3.csv', encoding='utf-8-sig', sep='\t'.encode('utf-8'), index=False)
df.to_csv('case4.csv', encoding='utf-8', sep='\t'.encode('utf-8'), index=False)
结果如下(使用excel打开案例文件):
因此,当utf-8-sig
和'\ t'分隔符表示Excel可以正确自动加载列时,如何修改代码?
提前致谢。
似乎默认情况下Excel在使用编码utf-8-sig
时不会将选项卡识别为列分隔符,如@EyJay所说,这可能是Excel的限制。最后,我通过使用编码utf-16
.reference来解决这个问题
df.to_csv('case5.csv', encoding='utf-16', sep='\t'.encode('utf-8'), index=False)