如何解决在 python 3 中 Unescape 转义表情符号
我正在尝试使用 Python 3 中的转义字符(表情符号)对字符串进行转义。 我对所有这些尝试都不走运:
import html
import json
from werkzeug.utils import unescape
a = 'foo \ud83d\udcde\ud83d\udce7 bar'
html.unescape(a)
a.encode().decode()
json.loads(f'{{"text":"{a}"}}').get('text')
unescape(a)
一切都不起作用。
任何关于精益和简单方法的想法?也许是图书馆?
解决方法
你可以看看这个库:https://pypi.org/project/demoji/。 你也可以试试
print("\U0001F600")
哪个会输出这个
?
你也可以试试这个
s = '?'
print(s.encode('unicode-escape'))
将输出这个
b'\\U0001f600'
另请访问此网站以获取完整列表。 https://unicode.org/emoji/charts/full-emoji-list.html
,a = '\\ud83d\\udcde'.encode("latin_1")
.decode("raw_unicode_escape")
.encode('utf-16','surrogatepass')
.decode('utf-16')
.encode("raw_unicode_escape")
.decode("latin_1")
# \U0001f4de
a = '\\ud83d\\udcde'.encode("latin_1")
.decode("raw_unicode_escape")
.encode('utf-16','surrogatepass')
.decode('utf-16')
# ?
您需要进行一系列的编码和解码,才能将 4 位 unicode 转义转换为 8 位 unicode 转义。详细了解 Unicode here。
-
.encode('latin1')
会给你字节:b'\\ud83d\\udcde'
-
.decode("raw_unicode_escape").encode('utf-16','surrogatepass')
将为您提供 2 位十六进制转义符:b'\xff\xfe=\xd8\xde\xdc'
-
.decode('utf-16')
使用 utf-16 解码它会给你表情符号:?
(在很暗的模式下可能很难看到表情符号) -
.encode("raw_unicode_escape")
再次对其进行编码将为您提供 8 位 Unicode 作为字节:b'\\U0001f4de'
-
.decode("latin_1")
最后,将 latin1 解码回来会给你 8 位的 Unicode 字符串:\U0001f4de
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。