我有一堆CSV文件,我用python和pandas阅读并绘制。
要在我的图中添加关于文件(或者更确切地说,数据)的更多信息,我正在分析它们的标题,从中提取各种内容(测量点的位置,测量类型等)
问题是 - 文件是德文的,因此包含很多变音符号(ü,ö,ä)。现在我可以完全阅读和理解它们,但我的剧本不能。
所以我想简单地用有效的2个字符表示形式替换它们(ü= ue,...),这样我就不用担心在python中使用u'Ümlautstring'
或\xfcstring
之类的东西了。 / p>
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,但这不是一个真正的选择。
答案 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
应该适用于所有ÄÖÜäöüß,我猜是你关心的。