作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在Python 3.3中,我试图从截断的unicode值重建unicode字符,然后将字符打印到控制台。
例如,我想从 '4E00' 形成字符串 '\u4E00'。我尝试过:
base = '4E00'
uni = r'\u' + base
print(uni) # getting '\u4E00', want: '一'
print(repr(uni)) # '\\u4E00'
在这种情况下有没有办法形成像“\u4E00”这样的非转义字符串?
最佳答案
请记住,\u
后跟 Unicode 字符代码只是字符串文字中的一个内容。 r'\u' + '4E00'
作为 Unicode 字符没有特殊含义,因为它不是全部在一个文字中;它只是一个六个字符的字符串。
因此,您尝试获取出现在 Python 字符串文字中的 Unicode 转义码,然后将其解码为 Unicode 字符。你可以这样做:
base = '4E00'
uni = str(bytes(r'\u' + base, encoding="ascii"), encoding="unicode_escape")
但是这是很长的路要走(特别是因为你必须首先将其转换为字节
,因为它已经是Unicode)。您的 Unicode 字符规范是十六进制的。所以直接将其转换为整数,然后使用chr()
将其转换为Unicode字符。
base = '4E00'
uni = chr(int(base, 16))
关于Python3 : Creating a string with an unescaped backslash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21344131/
我是一名优秀的程序员,十分优秀!