您可以使用以下命令解码这些 Unicode 转义序列.decode('unicode-escape')
。然而,.decode
is a bytes
方法,因此如果这些序列是文本而不是字节,您首先需要将它们编码为字节。或者,您(可能)可以以二进制模式打开 CSV 文件,以便将这些序列读取为bytes
而不是作为文本字符串。
只是为了好玩,我也会使用unicodedata
获取这些表情符号的名称。
import unicodedata as ud
emojis = [
'\\U0001F600',
'\\U0001F601',
'\\U0001F602',
'\\U0001F923',
]
for u in emojis:
s = u.encode('ASCII').decode('unicode-escape')
print(u, ud.name(s), s)
output
\U0001F600 GRINNING FACE ????
\U0001F601 GRINNING FACE WITH SMILING EYES ????
\U0001F602 FACE WITH TEARS OF JOY ????
\U0001F923 ROLLING ON THE FLOOR LAUGHING ????
这应该比使用快得多ast.literal_eval
。如果您以二进制模式读取数据,速度会更快,因为它避免了读取文件时的初始解码步骤,并且允许您消除.encode('ASCII')
call.
您可以使用以下方法使解码更加稳健
u.encode('Latin1').decode('unicode-escape')
但这对于您的表情符号数据来说不是必需的。正如我之前所说,如果以二进制模式打开文件以避免对其进行编码,那就更好了。