gpt4 book ai didi

python - 如何在 Python 中正确迭代 unicode 字符

转载 作者:行者123 更新时间:2023-11-30 22:28:10 26 4
gpt4 key购买 nike

我想迭代一个字符串并输出所有表情符号。

我正在尝试迭代这些字符,并根据emoji list检查它们。 .

但是,python 似乎将 unicode 字符分割成更小的字符,从而破坏了我的代码。示例:

>>> list(u'Test \U0001f60d')
[u'T', u'e', u's', u't', u' ', u'\ud83d', u'\ude0d']

你知道为什么你'\U0001f60d'被 split 吗?

或者提取所有表情符号的更好方法是什么?这是我原来的提取代码:

def get_emojis(text):
emojis = []
for character in text:
if character in EMOJI_SET:
emojis.append(character)
return emojis

最佳答案

Python 3.3 之前的版本在内部使用 UTF-16LE(窄构建)或 UTF-32LE(宽构建)来存储 Unicode,并且由于 leaky abstraction向用户公开此详细信息。 UTF-16LE 使用surrogate pairs将 U+FFFF 以上的 Unicode 字符表示为两个代码点。使用广泛的 Python 构建或切换到 Python 3.3 或更高版本来解决问题。

处理狭窄构建的一种方法是匹配代理对:

Python 2.7(窄版本):

>>> s = u'Test \U0001f60d'
>>> len(s)
7
>>> re.findall(u'(?:[\ud800-\udbff][\udc00-\udfff])|.',s)
[u'T', u'e', u's', u't', u' ', u'\U0001f60d']

Python 3.6:

>>> s = 'Test \U0001f60d'
>>> len(s)
6
>>> list(s)
['T', 'e', 's', 't', ' ', '😍']

关于python - 如何在 Python 中正确迭代 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46711888/

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