Python 3.0和repr

我不了解Python 3.0中的口译员的行为。我是
在Windows(US English)的命令提示符下工作,该命令具有终端
CP437的编码。
在Python 2.5中:
Python 2.5(R25:51908,Sep 19 2006,09:52:17)[MSC V.1310 32 BIT
(英特尔)
32
键入"帮助","版权","学分"或"许可"以获取更多信息。
u'\ u5000'
在Python 3.0中:
Python 3.0RC1(R30RC1:66507,Sep 18 2008,14:47:08)[MSC V.1500 32 BIT
(英特尔)]
在Win32上
键入"帮助","版权","学分"或"许可"以获取更多信息。
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件" C:\ dev \ python30 \ lib \ io.py",第1486行,在写
b = encoder.encode(s)
文件" c:c:\ dev \ python30 \ lib \ cododings \ cp437.py",第19行,在encode中
return codecs.charmap_encode(输入,self.errors,encoding_m ap)[0]
UnicenCodeError:'CharMap'编解码器无法编码字符'\ u5000'
位置
1:字符地图
我期望的地方
'\ u5000'
不论输出编码如何,x工作的ret()不应该吗?另一个测试:
Python 3.0RC1(R30RC1:66507,Sep 18 2008,14:47:08)[MSC V.1500 32 BIT
(英特尔)]
在Win32上
键入"帮助","版权","学分"或"许可"以获取更多信息。
'\ x00 \ x01 \ x02 \ x03 \ x04 \ x05 \ x05 \ x06 \ x07 \ x07 \ x08 \ x08 \ t \ n \ n \ x0b \ x0b \ x0c \ x0e \ x0e \ x0e \ x0f \ x0f \ x11111
x15 \ x16 \ x17 \ x18 \ x19 \ x1a \ x1b \ x1c \ x1c \ x1d \ x1e \ x1f
!"#$%&\'()*+, - 。
defghijklmnopqrstuvwxyz [\\]^_` abcdefghijklmnopqrstuvwxyz {|}〜\x7fâ\x7fâ\x7fâ©â©â©â€¢â€€
â€â€€ - - -
_±££�— ° -
'\ xa0'
CP437中无法显示的字符正在逃脱,例如
0x00-0x1f,0x7f和0xa0。即使我错误地解码一个值,如果
角色存在于CP437中,显示出:
'一个'
但是,对于CP437不支持的角色,解码不正确:
'*'
Trackback(最近的最新电话):
文件" ",第1行,<模块>
文件" C:\ dev \ python30 \ lib \ io.py",第1486行,在写
b = encoder.encode(s)
文件" c:c:\ dev \ python30 \ lib \ cododings \ cp437.py",第19行,在encode中
return codecs.charmap_encode(输入,self.errors,encoding_m ap)[0]
unicodeCodeError:'Charmap'编解码器无法编码字符'\ xfe'
位置1:
字符地图
为什么不在这里显示'\ xfe'?似乎这种不一致会造成
很难写一些不依赖于医生的医生
测试人员的终端。这也使得在没有的情况下检查变量很难
十六进制(ORD(n))以字符为基础。也许ret()应该永远
显示ASCII表示,所有其他字符的Escapes,
特别是考虑到" reter()应产生适合eval()的输出
如有可能的"规则"。
别人的意见是什么?对此DE的任何见解 签名决定?
-标记

# 回答1


别人的意见是什么?对这个设计决定有任何了解吗?
目的是显示字符串中的所有可打印字符都会显示
在ret。这特别是日本用户要求的
其他非ASCII字符的用户)抱怨reter()是
如果您的字符串实际上包含 * no * ascii字符,相当无用
(但是所有这些都是可打印的)。
请注意,字符串的repr()实际上成功了;尝试
反复的打印失败了。
如果需要,可以使用ASCII()内置。
但这也保留在新行为下!试试看嘛
pyx ='\ u5000'
pyeval(reter(x))== x
真的
问候,
马丁
P.S.您是如何在一个系统上将u+5000纳入数据的
终端编码是CP437? Google将其翻译为"皮疹";这
Unihan数据库也"迷惑","疯狂"。
# 回答2


"" Martinv.Lãwis"" 新闻:48 *****************************************************************************
目的是显示字符串中的所有可打印字符都会显示
在ret。这特别是日本用户要求的
其他非ASCII字符的用户)抱怨reter()是
如果您的字符串实际上包含 * no * ascii字符,相当无用
(但是所有这些都是可打印的)。
请注意,字符串的repr()实际上成功了;尝试
反复的打印失败了。
如果需要,可以使用ASCII()内置。
但这也保留在新行为下!试试看嘛
pyx ='\ u5000'
pyeval(reter(x))== x
真的
问候,
马丁
谢谢马丁,现在很明显。我刚刚读到了新的ascii()函数
在看到您的答复之前。
我只是从空中挑选了这个例子。我学习中文,知道是
Unicode地图该区域中的字符。我通常的编辑(Pythonwin
和wxpython的Pyalamode)不与Python 3一起工作,这就是为什么我
使用Windows CMD提示。
谢谢,
标记

标签: python

添加新评论