use*_*952 4 python regex unicode python-3.3
我想在Python 3.3中将一些字符转换为五位数的unicode.例如,
import re
print(re.sub('a', u'\u1D15D', 'abc' ))
Run Code Online (Sandbox Code Playgroud)
但结果与我的预期不同.我必须把角色本身,而不是代码点?有没有更好的方法来处理五位数的unicode字符?
Python unicode转义是4个十六进制数字(\uabcd)或8(\Uabcdabcd) ; 对于超出U + FFFF的代码点,您需要使用后者(大写U),确保左填充足够的零:
>>> '\U0001D15D'
''
>>> '\U0001D15D'.encode('unicode_escape')
b'\\U0001d15d'
Run Code Online (Sandbox Code Playgroud)
(是的,U + 1D15D代码点(MUSICAL SYMBOL WHOLE NOTE)在上面的示例中,但您的浏览器字体可能无法呈现它,而是显示占位符字形(框或问号).
因为我们使用了\uabcd逃避,你替换a在abc用两个字符的代码点U + 1D15(?拉丁语字母小资本OU),以及ASCII字符D.使用32位unicode文字作品:
>>> import re
>>> print(re.sub('a', '\U0001D15D', 'abc' ))
bc
>>> print(re.sub('a', u'\U0001D15D', 'abc' ).encode('unicode_escape'))
b'\\U0001d15dbc'
Run Code Online (Sandbox Code Playgroud)
同样,您的字体可以将U + 1D15D代码点显示为占位符字形.
| 归档时间: |
|
| 查看次数: |
1176 次 |
| 最近记录: |