繁体   English   中英

将 unicode 字符编码为 un​​icode 转义序列

[英]encode unicode characters to unicode escape sequences

我有一个包含网站和地址的 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网站背后运行着什么样的脚本?

预先感谢您的任何建议。

如果你想在 Python 中获得类似于 Java 的 Unicode 转义 你可以使用 JSON 格式

>>> 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

您可以使用 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% 的目的都一样好。

也许这样的事情可以帮助你? 我假设你有一个 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)

您始终可以使用 Visual Studio Code 并安装 ascii-unicode-escape 扩展。 安装后,您可以使用 Ctrl-Shift-P 并运行“转义非 ASCII 字符”命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM