我有一个包含网站和地址的CSV文件。我需要处理这个文件来生成一个json文件,我将在Django中使用它来将初始数据加载到我的数据库中。为此,我需要将CSV文件中的所有特殊字符转换为unicode转义字符。
以下是一个例子:
Örnsköldsvik;SE;Ornskoldsvik;Ångermanlandsgatan 28 A
应转换为:
\u00D6rnsk\u00F6ldsvik;SE;Ornskoldsvik;\u00C5ngermanlandsgatan 28 A
以下网站正在完成我期望的转换:http://itpro.cz/juniconv/但我想找到一种方法从命令行(bash)或python中完成。我已经尝试过使用iconv
,uconv
和一些python脚本而没有取得真正的成功。
juniconv
网站后面正在运行什么类型的脚本?
感谢您提出任何建议。
答案 0 :(得分:1)
如果你想在Python中获得Unicode escapes similar to Java;你可以use JSON format:
>>> import json
>>> import sys
>>> s = u'Örnsköldsvik;SE;Ornskoldsvik;Ångermanlandsgatan 28 A'
>>> json.dump(s, sys.stdout)
"\u00d6rnsk\u00f6ldsvik;SE;Ornskoldsvik;\u00c5ngermanlandsgatan 28 A"
还有unicode-escape
编解码器但你不应该使用它:它产生特定于Python的转义(Python Unicode字符串文字的外观):
>>> print s.encode('unicode-escape')
\xd6rnsk\xf6ldsvik;SE;Ornskoldsvik;\xc5ngermanlandsgatan 28 A
答案 1 :(得分:0)
也许这样的事情对你有帮助吗?我假设你有一个utf-8字符串...
import csv
csv_reader = csv.reader(utf8_data)
for row in csv_reader:
encoded_row = [unicode(cell, 'utf-8') for cell in row]
#print(encoded_row)
答案 2 :(得分:0)
您可以使用GNU libiconv的--unicode-subst选项:
$ echo 'Örnsköldsvik;SE;Ornskoldsvik;Ångermanlandsgatan 28 A' | \
iconv -t ASCII --unicode-subst='\u%04X'
\u00D6rnsk\u00F6ldsvik;SE;Ornskoldsvik;\u00C5ngermanlandsgatan 28 A
顺便说一下,GNU libiconv也有一个名为JAVA的伪编码,它可以做到这一点:
$ echo 'Örnsköldsvik;SE;Ornskoldsvik;Ångermanlandsgatan 28 A' | \
iconv -t JAVA
\u00d6rnsk\u00f6ldsvik;SE;Ornskoldsvik;\u00c5ngermanlandsgatan 28 A
注意:GNU libiconv 不 glibc中包含的iconv。它是一个单独的软件包,通常没有安装在glibc系统上,因为glibc的iconv对于99%的用途来说同样好。