Python error in Console but not in File: unexpected character after line continuation character -
i've got python script has class defined method:
@staticmethod def _sanitized_test_name(orig_name): return re.sub(r'[`‘’\"]*', '', re.sub(r'[\r\n\/\:\?\<\>\|\*\%]*', '', orig_name.encode('utf-8')))
i'm able run script command prompt fine, without issues. when paste code of full class in console, syntaxerror: unexpected character after line continuation character
:
>>> return re.sub(r'[`‘’\"]*', '', re.sub(r'[\r\n\/\:\?\<\>\|\*\%]*', '', orig_name.encode('utf-8'))) file "<stdin>", line 1 return re.sub(r'[``'\"]*', '', re.sub(r'[\r\n\/\:\?\<\>\|\*\%]*', '', orig_name.encode('utf-8'))) ^ syntaxerror: unexpected character after line continuation character
if skip method while pasting, works. note there difference in original line , what's shown error: r'[`‘’\"]*'
vs r'[``'"]*'
. replacing ur'[`‘’"]*'
gives syntaxerror: eol while scanning string literal
.
it seems python console seeing ‘
stylised `
(backtick) , ’
sytlised '
(single quote). when mean unicode open , close quotes. i've got # -*- coding: utf-8 -*-
@ top of script, paste console well.
focusing on expression causing error r'[`‘’"]*'
...
>>> r'[`‘’"]*' file "<stdin>", line 1 r'[``'"]*' ^ syntaxerror: eol while scanning string literal >>> ur'[`‘’"]*' # unicode modifier file "<stdin>", line 1 ur'[``'"]*' ^ syntaxerror: eol while scanning string literal
if terminal i'm in doesn't accept unicode input, interpretation of unicode chars ‘
`
, ’
'
, occurs.
so workaround split regex , use unichr()
corresponding codes 2 quotes, 2018 , 2019:
>>> r'[`' + unichr(2018) + unichr(2019) + r'"]*' u'[`\u07e2\u07e3"]*'
(and raw string modifier r''
isn't required particular regex.)
Comments
Post a Comment