Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解释ASCII以外的格式(n,';c';)的结果?_Python_Python 2.7 - Fatal编程技术网

Python 如何解释ASCII以外的格式(n,';c';)的结果?

Python 如何解释ASCII以外的格式(n,';c';)的结果?,python,python-2.7,Python,Python 2.7,考虑以下示例: format(97, 'c') format(6211, 'c') 第一个输出显然正确的'a';但是,第二个输出'C',我不明白为什么 缔约国指出: c:字符。打印前将整数转换为相应的unicode字符 所以不应该将6211映射到其Unicode字符我中文 相关系统信息:CPython 2.7.10,在Fedora 22上。您正在看到 问题是format(int,'c')在内部调用int.\uuuu format\uuuuu('c'),并且它返回一个str值(Python 2.

考虑以下示例:

format(97, 'c')
format(6211, 'c')
第一个输出显然正确的
'a'
;但是,第二个输出
'C'
,我不明白为什么

缔约国指出:

c:字符。打印前将整数转换为相应的unicode字符

所以不应该将
6211
映射到其Unicode字符
中文

相关系统信息:CPython 2.7.10,在Fedora 22上。

您正在看到

问题是
format(int,'c')
在内部调用
int.\uuuu format\uuuuu('c')
,并且它返回一个str值(Python 2.x中的字节),因此它总是在范围内(0,256)。因此,对于256这样的值,它会返回到
0
。范例-

>>> format(256,'c')
'\x00'
根据这个问题,他们说修复方法是使用Python3,其中字符串是unicode,因此Python3.x中没有这个问题

我能想到的唯一解决办法是改用-

>>> unichr(0x6211)
u'\u6211'
>>> print(unichr(0x6211))
我

尽管请注意,
6211
是一个整数,它不是您要查找的unicode字符,而是映射到的。您要查找的是
0x6211
,它是一个十六进制值,映射到Python 3.x中的
格式(0x6211,'c')

用于检测
0x6211
+1。请注意,Unicode代码点是十六进制的,而不是十进制的;'a'是U+0061,即十进制97,和'我' 是U+6211,即十进制25105。十进制6211将是U+1843蒙古语字母TODO长元音符号