将unicode字符编码为unicode转义序列

时间:2016-04-27 11:33:00

标签: python json django unicode iconv

我有一个包含网站和地址的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中完成。我已经尝试过使用iconvuconv和一些python脚本而没有取得真正的成功。

juniconv网站后面正在运行什么类型的脚本?

感谢您提出任何建议。

3 个答案:

答案 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%的用途来说同样好。