首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 8字符范围

Python 8字符范围
EN

Stack Overflow用户
提问于 2017-04-23 07:48:58
回答 1查看 1K关注 0票数 3

我使用一个用utf-8编码的文本文件,并用python读取其内容。读取内容后,我将文本拆分为字符数组。

代码语言:javascript
复制
import codecs

with codecs.open(fullpath,'r',encoding='utf8') as f:
    text = f.read()
    # Split the 'text' to characters

现在,我在对每个字符进行迭代。首先,将其转换为十六进制表示并在其上运行一些代码。

代码语言:javascript
复制
numerialValue = ord(char)

我注意到,在所有这些字符之间,有些字符超出了预期的范围。

预期最大值- FFFF。实际字符值- 1D463。

我把这段代码翻译成python。原始源代码来自C#,其值'\u1D463‘是无效字符。

被迷惑了。

EN

回答 1

Stack Overflow用户

发布于 2017-04-23 09:13:13

您似乎用\u而不是\U来转义您的Unicode代码点(Unicode代码点)。前者期望四个十六进制数字,后者期望八个十六进制数字。根据的说法:

The condition was ch == '\u1D463'

当我在Python解释器中使用这个文字时,它不会抱怨,但它很高兴地摆脱了前四个十六进制数字,在cmd中运行时通常会打印3个字符:

代码语言:javascript
复制
 >>> print('\u1D463')
ᵆ3

您得到了这个异常:Expected max value - FFFF. Actual character value - 1D463,因为您使用的是不正确的unicode转义,所以使用\U0001D463而不是\u1D463\u中字符代码点的最大值是\uFFFF\U的最大值是\UFFFFFFFF。注意\U0001D463中的前导零,\U取8位十六进制数字,\u取4位十六进制数字:

代码语言:javascript
复制
>>> '\U1D463'
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-6: truncated \UXXXXXXXX escape

>>> '\uFF'
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-3: truncated \uXXXX escape
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43568663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档