Conversion Issue in Converting code of 2.7 to 3

MRAB python at mrabarnett.plus.com
Fri Aug 23 22:45:19 EDT 2013


On 24/08/2013 03:10, shankha wrote:
> Hi,
> I am trying to run the following piece of code:
>
> https://greyhat.gatech.edu/wiki/index.php?title=Java_Bytecode_Tutorial/Getting_Started
>
> python Krakatau/assemble.py minimal.j.
>
> The scripts are written for 2.7. I want to convert them to 3.3.
>
> I am struck with the following error:
>
>
>
> []$ python Krakatau/assemble.py minimal.j
> Traceback (most recent call last):
>    File "Krakatau/assemble.py", line 4, in <module>
>      from Krakatau.assembler import tokenize, parse, assembler
>
>
>    File "c:\tmp\ByteCode\Krakatau\Krakatau\assembler\tokenize.py", line 3, in <module>
>      from ..classfile import ClassFile
>    File "c:\tmp\ByteCode\Krakatau\Krakatau\classfile.py", line 1, in <module>
>
>
>      from . import constant_pool, method, field
>    File "c:\tmp\ByteCode\Krakatau\Krakatau\constant_pool.py", line 10
>      def decodeStr((s,)):
>                    ^
> SyntaxError: invalid syntax
>
>
>
>
>
> The code where this error originates from:
>
> def decodeStr((s,)):
>      return s.replace('\xc0\x80','\0').decode('utf8'),
>
>
>
> I looked athttp://docs.python.org/3/whatsnew/3.0.html  but I couldn't figure out where
>
> I am going wrong?
>
Look here:

     http://docs.python.org/3/whatsnew/3.0.html#changed-syntax

at the "Removed Syntax" section where it mentions PEP 3113.

A simple fix is:

def decodeStr(arg):
     (s,) = arg
     return s.replace('\xc0\x80','\0').decode('utf8'),

or:

def decodeStr(s):
     return s[0].replace('\xc0\x80','\0').decode('utf8'),




More information about the Python-list mailing list