从包含转义序列的文本中编码表情符号



我正试图将此表单text = "\ud83d\ude04\n\u3082\u3042"中的一些带有表情符号的文本打印到:

# my expecting output
# a new line after the emoji, then is Japanese character
>>>😄
もあ

我读过一个关于这个的问题,但只是解决了部分问题:

从文本文件编码表情包(Python(的最佳干净方法

我遵循了帖子中提到的代码,得到了以下结果:

emoji_text = "\ud83d\ude04\n\u3082\u3042".encode("latin_1")
output = (emoji_text
.decode("raw_unicode_escape")
.encode('utf-16', 'surrogatepass')
.decode('utf-16')
)
print(output)
>>>😄nもあ
# it prints n instead of a new line

因此,我想问,在转换表情符号和文本时,如何转换转义序列\n、\t、\b等?

使用unicode_escape而不是raw_unicode_escape也将解码n。尽管如果你最初使用raw_unicode_escape是有原因的,也许这不合适?

你选择编码成"latin-1"有点奇怪,但也许这也是有原因的。也许你应该编码成"ascii",并做好应对任何可能的后果的准备。

最新更新