在 UTF 8 系统上替换 ISO 8859-15 文件中的德语变音符号
Replacing German Umlauts in an ISO 8859-15 file on an UTF 8 system
我有一堆 CSV 文件,我用 python 和 pandas 阅读和绘制。
为了在我的图中添加更多关于该文件的信息(或者更确切地说,它所涉及的数据),我正在分析它们 headers,以从中提取各种信息(测量点的位置,测量类型等)。
问题是 - 这些文件是德语的,因此包含很多变音符号 (ü, ö, ä)。现在我可以很好地阅读和理解它们,但我的脚本不能。
所以我只想用有效的 2 个字符表示(ü=ue,...)替换它们,这样我就不必担心在 u'Ümlautstring'
或 \xfcstring
=35=].
sed -i 's/\ä/ae/g' myfile.csv
根据 google,应该可以解决问题,但它不起作用。
经过进一步研究,我发现了问题,但没有解决方案:
我的 csv 文件编码为 ISO 8859-15
,但我的 locale
是 LANG=de_DE.UTF-8
,据我所知,这意味着 sed 搜索 ü
在它的 utf 8 形式中,它不会在 ISO 8859-15 中找到。
那么我必须告诉 sed 什么才能找到我的变音符号?
到目前为止我发现的大多数东西都建议使用 Perl,但这并不是一个真正的选择。
您可以使用 LC_*
环境变量来防止 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
应该适用于所有 ÄÖÜäöüß,我猜这就是您所关心的。
我有一堆 CSV 文件,我用 python 和 pandas 阅读和绘制。
为了在我的图中添加更多关于该文件的信息(或者更确切地说,它所涉及的数据),我正在分析它们 headers,以从中提取各种信息(测量点的位置,测量类型等)。
问题是 - 这些文件是德语的,因此包含很多变音符号 (ü, ö, ä)。现在我可以很好地阅读和理解它们,但我的脚本不能。
所以我只想用有效的 2 个字符表示(ü=ue,...)替换它们,这样我就不必担心在 u'Ümlautstring'
或 \xfcstring
=35=].
sed -i 's/\ä/ae/g' myfile.csv
根据 google,应该可以解决问题,但它不起作用。
经过进一步研究,我发现了问题,但没有解决方案:
我的 csv 文件编码为 ISO 8859-15
,但我的 locale
是 LANG=de_DE.UTF-8
,据我所知,这意味着 sed 搜索 ü
在它的 utf 8 形式中,它不会在 ISO 8859-15 中找到。
那么我必须告诉 sed 什么才能找到我的变音符号?
到目前为止我发现的大多数东西都建议使用 Perl,但这并不是一个真正的选择。
您可以使用 LC_*
环境变量来防止 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
应该适用于所有 ÄÖÜäöüß,我猜这就是您所关心的。