【问题标题】:Remove zero-padding from unicode从 unicode 中删除零填充
【发布时间】:2016-01-09 08:05:42
【问题描述】:

我想获取表情符号的 unicode 表示。

用下面的sn-p就可以搞定了

emoji_rep = unicode('????', 'utf-8').encode('unicode_escape')

emoji_rep 的值为\U0001f605 但是,我只希望结果为1f605。有没有一种pythonic/优雅的方法来解决这个问题?此外,一些表情符号具有 unicode 值,例如 \u270b\U0001f3fe。一个更好的表示它的方式是270b+1f3fe

【问题讨论】:

    标签: python python-2.7 unicode emoji


    【解决方案1】:

    您可以通过ord(u'?') 获得代码点。如果您愿意,可以将其转换为十六进制:例如。通过hex(ord(u'?'))"{:x}".format(ord(u'?'))

    请注意,Unicode 代码点最常见的十六进制表示形式是 U+270B(4 位)用于低于 0x10000 的代码点,U+01F3FE(6 位)用于其他代码点。

    【讨论】:

    • 我得到一个TypeError,因为ord() 需要一个字符,但表情符号是一个字符串。
    • @Hashirun:不要使用非 ascii 字节串文字(它们甚至在 Python 3 中被明确禁止,在 Python 2 中避免使用它们也是一个好习惯)。改用 Unicode 文字:u'?'
    • @J.F.Sebastian 对不起,我很困惑。所以我尝试了ord(u'?') 并得到了TypeError: ord() expected a character, but string of length 2 found
    • @Hashirun:这意味着您使用的是狭窄的 python 2 构建,其中非 BMP 字符表示为 utf-16 代理 (u'\ud83d\ude05')。它是一个实现工件。如果您不能使用广泛的 python 构建 (Linux) 或升级到 Python 3,那么您必须使用解决方法。
    • @J.F.Sebastian 哦。好的,很高兴知道。我刚刚将我的 Django 项目升级到Python 3.5
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多