当参数为unicode时,Pypy似乎不处理string.maketrans(),但是CPython可以:

$ python
Python 2.7.5 (default, Oct 11 2013, 14:51:32)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import string
>>> string.maketrans(ur"-/[] ", ur"_____")
'\x00\x01\x02\x03\x04\x05\x06...'




$ pypy
Python 2.7.13 (c925e73810367cd960a32592dd7f728f436c125c, Jun 08 2017, 19:14:08)
[PyPy 5.8.0 with GCC 6.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>> import string
>>>> string.maketrans(ur"-/[] ", ur"_____")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".../pypy-5.8-linux_x86_64-portable/lib-python/2.7/string.py", line 78, in maketrans
    buf[ord(fromstr[i])] = tostr[i]
TypeError: 'unicode' object cannot be interpreted as an index


http://pypy.readthedocs.io/en/latest/cpython_differences.html上未找到任何相关内容。

这是CPython还是PyPy的错误?

最佳答案

那是一个“错误”,即意想不到的区别。已在7fe0041fccaa中修复(请参见https://bitbucket.org/pypy/pypy/raw/default/lib-python/2.7/string.py的78行)。

关于python - string.maketrans Unicode处理:pypy与CPython,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46332251/

10-12 21:17