gpt4 book ai didi

Python:从非 BMP unicode 字符中查找等效代理对

转载 作者:太空狗 更新时间:2023-10-29 21:00:28 26 4
gpt4 key购买 nike

此处给出的答案:How to work with surrogate pairs in Python?告诉您如何将代理项对(例如 '\ud83d\ude4f')转换为单个非 BMP unicode 字符(答案是 "\ud83d\ude4f".encode('utf -16', 'surrogatepass').decode('utf-16')).我想知道如何反向执行此操作。我如何使用 Python 从非 BMP 字符中找到等效的代理项对,将 '\U0001f64f' (🙏) 转换回 '\ud83d\ude4f'。我找不到明确的答案。

最佳答案

您必须用代理对手动替换每个非 BMP 点。您可以使用正则表达式执行此操作:

import re

_nonbmp = re.compile(r'[\U00010000-\U0010FFFF]')

def _surrogatepair(match):
char = match.group()
assert ord(char) > 0xffff
encoded = char.encode('utf-16-le')
return (
chr(int.from_bytes(encoded[:2], 'little')) +
chr(int.from_bytes(encoded[2:], 'little')))

def with_surrogates(text):
return _nonbmp.sub(_surrogatepair, text)

演示:

>>> with_surrogates('\U0001f64f')
'\ud83d\ude4f'

关于Python:从非 BMP unicode 字符中查找等效代理对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40222971/

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