簡體   English   中英

如何在python中轉義UNICODE字符串(到javascript轉義)

[英]How to escape UNICODE string in python (to javascript escape)

我有以下字符串"◣⛭◣◃✺▲♢" ,我想把這個字符串變成"\◣\⛭\◣\◃\✺\▲\♢" 與此網站完全相同的https://mothereff.in/js-escapes

我想知道這是否可能在python中。 我已經嘗試過來自unicode docs for python的所有東西但是失敗了。

我以前嘗試過的例子:

#!/usr/bin/env python
# -*- coding: latin-1 -*-

f = open('js.js', 'r').read()

print(ord(f[:1]))

幫助將不勝感激!

考慮到你使用的是Python 3:

unicode_string="◣⛭◣◃✺▲♢"
byte_string= unicode_string.encode('ascii', 'backslashreplace')
print(byte_string)

有關更多信息,請參閱編解碼器模塊文檔。

但是,要使用JavaScript表示法,有一個特殊的模塊json ,然后你可以實現同樣的事情:

import json
unicode_string="◣⛭◣◃✺▲♢"
json_string=json.dumps(unicode_string)
print(json_string)

如果你在python 2中,那么我懷疑你得到的是這樣的東西:

>>> s = "◣⛭◣◃✺▲♢"
>>> s[0]
'\xe2'

要獲取UTF-8編碼文件(或緩沖區)中的unicode代碼點,首先需要將其解碼為python unicode對象(否則您將看到構成UTF-8編碼的字節)。

>>> s_utf8 = s.decode('utf-8')
>>> s_utf8[0]
u'\u25e3'
>>> ord(s_utf8[0])
9699
>>> hex(ord(s_utf8[0]))
'0x25e3'

在你的情況下,你可以直接從ord()轉到文字unicode轉義,如下所示:

>>> "\\u\x" % (ord(s_utf8[0]))
'\\u25e3'

或者使用列表解析一次性轉換整個字符串:

>>> ''.join(["\\u%04x" % (ord(c)) for c in s_utf8])
'\\u25e3\\u26ed\\u25e3\\u25c3\\u273a\\u25b2\\u2662'

當然,當您以這種方式進行轉換時,您將顯示字符串中所有字符的代碼點。 您必須決定顯示哪些代碼點,否則ABC也將被轉義:

>>> ''.join(["\\u%04x" % (ord(c)) for c in u"ABCD"])
'\\u0041\\u0042\\u0043\\u0044'

或者,只需使用georg的建議讓python為你解決所有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM