Bottom Page

Thread Rating:
  • 2 Vote(s) - 3.5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 SyntaxError: unexpected character after line continuation character
#1
Hello all, and I'm a new member here Big Grin .
I made a esoteric version of Python for fun, but I'm having some problems when running multiline code with the \n and \t characters. Here is the program that runs the code:
#QwertyPy
def decode(string):
    re = ""
    slist = string.split("_")
    for i in range(0,len(slist)):
        if slist[i][0] in "0123456789":
            if int(slist[i]) > 92:
                re = re + " "
            else:
                re = re + char[int(slist[i])]
        elif slist[i] not in char:
            re = re + slist[i]
    return re
char = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789~!@#$%^&*()_+-=[]{}\|;:,./<>? "
code = raw_input()
c = (decode(code))
exec(c)
Basically, it is Python but every character is mapped to the string "char" as seen above. Not sure how to explain this though. For example, a simple "Hello World!" program looks like this:
9_3_7_24_4_71_"_41_2_18_18_8_94_27_8_3_18_12_63_"_72
It separates the string by the "_" character, and gets the nth char in the char string. For example, the number "9" corresponds to the letter "p" in the char string, the number 3 to "r", and so on, and characters that aren't numbers are unchanged.

But I have trouble when entering this, which is an infinite counter:
7_103_76_123_52_81_24_1_15_7_18_2_147_30_3_6_2_84_81_24_81_4_9_3_7_24_4_71_7_72_81_24_81_4_7_138_74_76_113_53
Which corresponds to the normal Python:
i = 0
while True:
   print(i)
   i += 1
But for some reason it gives the following error:
Error:
Traceback (most recent call last): File "C:\Users\sakaf\Documents\Saka\scripts\Not Golly\qwertypy.py", line 17, in <module> exec(c) File "<string>", line 1 i = 0\nwhile True:\n\tprint(i)\n\ti += 1 ^ SyntaxError: unexpected character after line continuation character
Strangely enough, when I paste i = 0\nwhile True:\n\tprint(i)\n\ti += 1 and run it using exec() in the python shell, it runs fine. So why is this happening?

Thanks Big Grin
Quote
#2
That's some fun script.

To understand the problem you should print variable c.You'll see that i = 0\nwhile True:\n\tprint(i)\n\ti += 1 is printed which implies that the backslash has already been escaped. So your real string actually is i = 0\\nwhile True:\\n\\tprint(i)\\n\\ti += 1.

To solve the problem convert string to bytes and decode with unicode-escape

c = (decode(code))
c = c.encode('ascii').decode('unicode-escape')
exec(c)
More on problem:
>>> a = 'hello \nThis is newline \n\tThis is horizontal tab'
>>> print(a)
hello
This is newline
        This is horizontal tab
>>> a = 'hello \\nThis is not a newline \\n\\tThis is not a horizontal tab'
>>> print(a)
hello \nThis is not a newline \n\tThis is not a horizontal tab
Saka likes this post
Quote
#3
(Sep-25-2017, 02:28 PM)hbknjr Wrote: ...
To solve the problem convert string to bytes and decode with unicode-escape
...
Thank you so much! Now it works great and I can run pretty much any piece of python code in this obscure language. Thanks!
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  'utf-8' codec can't decode byte 0xe2 in position 122031: invalid continuation byte tienttt 12 275 Sep-18-2020, 10:10 PM
Last Post: tienttt
  Iterating over word vs. character Mark17 6 211 Aug-11-2020, 04:56 PM
Last Post: Mark17
  SyntaxError: unexpected character after line continuation character siteshkumar 2 231 Jul-13-2020, 07:05 PM
Last Post: snippsat
  Remove from end of string up to and including some character lbtdne 2 387 May-17-2020, 09:24 AM
Last Post: menator01
  Help ANSI character and python... sid4g 2 344 Mar-19-2020, 06:08 PM
Last Post: sid4g
  loop only prints last character. mcmxl22 1 318 Feb-17-2020, 02:36 AM
Last Post: menator01
  create a list of object with a list of character studenthch 0 265 Feb-12-2020, 08:43 AM
Last Post: studenthch
  'utf-8' codec can't decode byte 0xda in position 184: invalid continuation byte karkas 8 13,682 Feb-08-2020, 06:58 PM
Last Post: karkas
  convert a character to numeric and back Skaperen 2 375 Jan-28-2020, 09:32 PM
Last Post: Skaperen
  Regex won't replace character with line break Tomf96 2 422 Jan-12-2020, 12:14 PM
Last Post: Tomf96

Forum Jump:


Users browsing this thread: 1 Guest(s)