有关csv文件的utf-8-sig编码和制表符分隔符的问题

问题描述 投票:1回答:1

我想用'\ 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打开案例文件):

case1.csv:enter image description here

case2.csv:enter image description here

case3.csv:enter image description here

case4.csv:enter image description here

因此,当utf-8-sig和'\ t'分隔符表示Excel可以正确自动加载列时,如何修改代码?

提前致谢。

pandas csv
1个回答
1
投票

似乎默认情况下Excel在使用编码utf-8-sig时不会将选项卡识别为列分隔符,如@EyJay所说,这可能是Excel的限制。最后,我通过使用编码utf-16.reference来解决这个问题

    df.to_csv('case5.csv', encoding='utf-16', sep='\t'.encode('utf-8'), index=False)
© www.soinside.com 2019 - 2024. All rights reserved.