gpt4 book ai didi

python-2.7 - 获取适当长度的表情符号

转载 作者:行者123 更新时间:2023-12-04 17:53:07 25 4
gpt4 key购买 nike

我注意到,当您在手机消息中输入表情符号时,有些表情符号占用 1 个字符,有些占用 2 个字符。例如,“♊”占用 1 个字符,但“😁”占用 2 个字符。在 python 中,我'我试图获取表情符号的长度,我得到:

len("♊") # 3
len("😁") # 4
len(unicode("♊", "utf-8")) # 1 OH IT WORKS!
len(unicode("😁", "utf-8")) # 1 Oh wait, no it doesn't.

有什么想法吗?

本网站的表情符号长度在 Character.charCount() 行:http://www.fileformat.info/info/unicode/char/1F601/index.htm

最佳答案

阅读sys.maxunicode :

An integer giving the value of the largest Unicode code point, i.e. 1114111 (0x10FFFF in hexadecimal).

Changed in version 3.3: Before PEP 393, sys.maxunicode used to be either 0xFFFF or 0x10FFFF, depending on the configuration option that specified whether Unicode characters were stored as UCS-2 or UCS-4.

以下脚本应该适用于 Python 版本 2 和 3:

# coding=utf-8

from __future__ import print_function
import sys, platform, unicodedata

print( platform.python_version(), 'maxunicode', hex(sys.maxunicode))
tab = '\t'
unistr = u'\u264a \U0001f601' ### unistr = u'♊ 😁'
print ( len(unistr), tab, unistr, tab, repr( unistr))
for char in unistr:
print (len(char), tab, char, tab, repr(char), tab,
unicodedata.category(char), tab, unicodedata.name(char,'private use'))

输出 显示不同 sys.maxunicode 属性值的结果。例如,😁 字符(Basic Multilingual Plane 上面的 unicode 代码点 0x1f601)被转换为相应的 surrogate pair (代码点 u'\ud83d'u'\ude01')如果 sys.maxunicode 结果为 0xFFFF:

PS D:\PShell> [System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8

PS D:\PShell> . py -3 D:\test\Python\Py\42783173.py
3.5.1 maxunicode 0x10ffff
3 ♊ 😁 '♊ 😁'
1 ♊ '♊' So GEMINI
1 ' ' Zs SPACE
1 😁 '😁' So GRINNING FACE WITH SMILING EYES

PS D:\PShell> . py -2 D:\test\Python\Py\42783173.py
2.7.12 maxunicode 0xffff
4 ♊ 😁 u'\u264a \U0001f601'
1 ♊ u'\u264a' So GEMINI
1 u' ' Zs SPACE
1 �� u'\ud83d' Cs private use
1 �� u'\ude01' Cs private use

注意:以上输出示例取自Unicode-aware Powershell-ISE console pane .

关于python-2.7 - 获取适当长度的表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42783173/

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