【发布时间】:2015-04-20 15:50:48
【问题描述】:
我有一堆我用 python 和 pandas 读取和绘制的 CSV 文件。
要在我的图中添加一些关于文件(或者更确切地说是它所涉及的数据)的更多信息,我正在分析它们的标题,从中提取各种内容(测量点的位置、测量类型等) .
问题是 - 文件是德语的,因此包含很多变音符号(ü、ö、ä)。现在我可以很好地阅读和理解它们,但我的脚本不能。
所以我想简单地将它们替换为有效的 2 个字符表示(ü=ue,...),这样我就不必担心在 python 中使用 u'Ümlautstring' 或 \xfcstring 之类的东西。
sed -i 's/\ä/ae/g' myfile.csv
根据谷歌的说法,应该可以解决问题,但它不起作用。
通过进一步研究,我找到了问题,但没有解决方案:
我的 csv 文件以 ISO 8859-15 编码,但我的 locale 是 LANG=de_DE.UTF-8,据我了解,这意味着 sed 以 utf 8 形式搜索 ü,它不会在 ISO 8859-15 中找到。
那么我必须告诉 sed 什么才能找到我的变音符号?
到目前为止,我发现的大多数东西都建议使用 Perl,但这并不是一个真正的选择。
【问题讨论】:
-
正确的解决方案是解码 8859-15 并将生成的 Unicode 规范化为合适的格式。
import unicodedata; decoded_normalized = unicodedata.normalize('NFKD', open(file, 'r').read().decode('iso-8859-15'))
标签: python utf-8 sed diacritics iso-8859-15