0

我有一堆 CSV 文件,我用 python 和 pandas 读取和绘制。

为了在我的图中添加一些关于文件(或者更确切地说是它所涉及的数据)的更多信息,我正在分析它们的标题,以从中提取各种内容(测量点的位置、测量类型等)。

问题是 - 文件是德语的,因此包含很多变音符号(ü、ö、ä)。现在我可以很好地阅读和理解它们,但我的脚本不能。

所以我想简单地用它们有效的 2 个字符表示(ü=ue,...)替换它们,这样我就不必担心使用 python 之类u'Ümlautstring'的东西\xfcstring

sed -i 's/\ä/ae/g' myfile.csv

根据谷歌的说法,应该可以解决问题,但它不起作用。

通过进一步研究,我发现了问题,但没有解决方案:

我的 csv 文件编码为ISO 8859-15,但我locale的 is LANG=de_DE.UTF-8,据我了解,这意味着 sed 以üutf 8 形式搜索,它在 ISO 8859-15 中找不到。

那么我必须告诉 sed 什么才能找到我的变音符号?

到目前为止,我发现的大多数东西都建议使用 Perl,但这并不是一个真正的选择。

4

1 回答 1

2

您可以使用LC_*envvars 来防止 sed 执行任何 UTF-8 解释和\x转义序列,以通过 ISO-8859-15 中的十六进制值来指定变音符号。长话短说,

LC_ALL=C sed 's/\xc4/Ae/g;s/\xd6/Oe/g;s/\xdc/Ue/g;s/\xe4/ae/g;s/\xf6/oe/g;s/\xfc/ue/g;s/\xdf/ss/g' filename

应该适用于所有 ÄÖÜäöüß,我猜这是您关心的。

于 2015-02-19T10:45:13.660 回答