在UTF 8系统上的ISO 8859-15文件中替换德语变音符号

时间:2015-02-19 10:32:59

标签: python utf-8 sed diacritics iso-8859-15

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

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

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

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

sed -i 's/\ä/ae/g' myfile.csv
根据谷歌的说法,

应该可以解决问题,但它不起作用。

通过一些进一步的研究,我找到了问题,但没有解决方案:

我的csv文件是用ISO 8859-15编码的,但我的localeLANG=de_DE.UTF-8,根据我的理解,这意味着sed在其中搜索ü utf 8表格,在ISO 8859-15中找不到。

那么我有什么要告诉sed找到我的变音符号?

到目前为止我发现的大部分内容都建议Perl,但这不是一个真正的选择。

1 个答案:

答案 0 :(得分: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

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