Linux 上的 Pandas 导入 UTF 8 (BOM) csv,其中 BOM 标题作为列名称中的明文

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

Linux 和 MacOS 上导入 csv 数据的区别

大家好

在 Linux 下使用 UTF8 (BOM) 编码导入带有

pandas.read_csv
的 csv 文件时,第一列名称包含明文形式的 BOM,例如
\\xEF\\xBB\\xBFColumnName

当我在 MacOS 下做同样的事情时,一切都很漂亮。为什么会出现这种情况?

我使用 python-3.10.12 和 pandas-2.1.2。

python pandas csv utf-8 read-csv
1个回答
0
投票

这似乎不是 pandas 的问题,而是在 makefile 中使用时 printf 行为的问题:

给定一个 UTF-8(无 BOM)格式的文件 dep.csv,其内容为:

colA;colB:...

和一个包含目标的 Makefile,例如:

target: dep.csv
    python3 somescript.py
    mv -v $@ $@~
    printf '\xEF\xBB\xBF' | cat - $@~ > $@

a

make target

导致包含

的 dep.csv
\xEF\xBB\xBFcolA;colB;...

作为纯文本,编码在编辑器(例如 VSCode 或 VIM)中显示为 UTF-8。

但是当在 bash 提示符中直接发出

printf '\xEF\xBB\xBF' | cat - dep.csv~ > dep.csv
时,文件被正确编码为 UTF-8 (BOM):

colA;colB:...

这在 MacOS 上正确完成。

我会将这个问题放在一个新线程中,因为这不是

pandas
python
的问题,而是
make
/
printf
的问题。

© www.soinside.com 2019 - 2024. All rights reserved.