gpt4 book ai didi

python - 如何在 python 中正确打印 unicode 字符列表?

转载 作者:太空狗 更新时间:2023-10-30 01:19:22 25 4
gpt4 key购买 nike

我正在尝试在 python 字符串中搜索表情符号。所以我有,例如,

em_test = ['\U0001f680']
print(em_test)
['🚀']
test = 'This is a test string 💰💰🚀'
if any(x in test for x in em_test):
print ("yes, the emoticon is there")
else:
print ("no, the emoticon is not there")

yes, the emoticon is there

如果在

中搜索 em_test

'This is a test string 💰💰🚀'

我真的可以找到它。

所以我制作了一个 csv 文件,其中包含我想要的所有表情符号,这些表情符号由它们的 unicode 定义。CSV 看起来像这样:

\U0001F600

\U0001F601

\U0001F602

\U0001F923

当我导入并打印它时,我实际上没有得到表情符号,而只是文本表示:

['\\U0001F600',
'\\U0001F601',
'\\U0001F602',
'\\U0001F923',
...
]

因此我无法使用它在另一个字符串中搜索这些表情符号...我不知何故知道双反斜杠\只是单斜杠的表示,但不知何故 unicode 阅读器不明白......我不知道我错过了什么。

有什么建议吗?

最佳答案

您可以使用 .decode('unicode-escape') 解码那些 Unicode 转义序列。但是,.decode 是一种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)

输出

\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') 调用。

您可以使用

使解码更加稳健
u.encode('Latin1').decode('unicode-escape')

但这对于您的表情符号数据来说不是必需的。正如我之前所说,如果您以二进制模式打开文件以避免对其进行编码,那就更好了。

关于python - 如何在 python 中正确打印 unicode 字符列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47263783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com