SyntaxError: unexpected character after line continuation character - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: SyntaxError: unexpected character after line continuation character (/thread-5252.html) |
SyntaxError: unexpected character after line continuation character - Saka - Sep-25-2017 Hello all, and I'm a new member here . 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 += 1But for some reason it gives the following error: 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 RE: SyntaxError: unexpected character after line continuation character - hbknjr - Sep-25-2017 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 RE: SyntaxError: unexpected character after line continuation character - Saka - Sep-26-2017 (Sep-25-2017, 02:28 PM)hbknjr Wrote: ...Thank you so much! Now it works great and I can run pretty much any piece of python code in this obscure language. Thanks! |