请观察:
CPython的:
PS Z:\dev\poc\SDR> python
Python 2.7.1 (r271:86832, Nov 27 2010, 17:19:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from zipfile import ZipFile
>>> z=ZipFile('d:/aaa.zip')
>>> input=z.open(z.namelist()[0])
>>> next(input)
'aaa,bbb\n'
>>> next(input)
'123,456\n'
>>>
IronPython的:
PS Z:\dev\poc\SDR> ipy64
IronPython 2.7.1 (2.7.0.40) on .NET 4.0.30319.225
Type "help", "copyright", "credits" or "license" for more information.
>>> from zipfile import ZipFile
>>> z=ZipFile('d:/aaa.zip')
>>> input=z.open(z.namelist()[0])
>>> next(input)
b'aaa,bbb\n'
>>> next(input)
'123,456\n'
>>>
请注意,IronPython将第一行显示为b'aaa,bbb\n'
,而CPython显示'aaa,bbb\n'
。这种差异非常重要,因为前者只是字节,而后者是字符串。
如何让IronPython将第一行视为字符串?
答案 0 :(得分:0)
这看起来很奇怪,但在python 2.7中,常规字符串是一个字节字符串。实际上,byte()
是str
的同义词。如果您打印repr(bytes("hello"))
,则会看到'hello'
,而不是b'hello'
。在python 3中当然是另一个故事。
简而言之, 已经在CPython中获取了一个字节字符串,所以我相信没有实际问题。 (在花更多时间试图“修复”它之前,我肯定会检查是否有什么东西坏了)。我不使用IronPython,但我读过它使用unicode作为字符串的默认类型(如Python 3)。我得出的结论是,IronPython中的b'string'
与CPython 2中的'string'
意味着相同(而'string'
与CPython的u'string'
意味着相同)。
答案 1 :(得分:0)