2016-09-07 732 views
1

我有一個Python腳本,其具有用這種方法定義的類:Python的錯誤控制檯,但不是在文件:續行符之後意外的字符

@staticmethod 
def _sanitized_test_name(orig_name): 
    return re.sub(r'[`‘’\"]*', '', re.sub(r'[\r\n\/\:\?\<\>\|\*\%]*', '', orig_name.encode('utf-8'))) 

我能夠從運行該腳本命令提示符就好了,沒有任何問題。但是,當我粘貼在控制檯中滿級的代碼,我得到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 

如果我跳過的方法,同時粘貼,它的工作原理。請注意,我的原始線路和錯誤顯示內容有所不同:r'[`‘’\"]*' vs r'[``'"]*'。用ur'[`‘’"]*'代替SyntaxError: EOL while scanning string literal

看來Python的控制檯看到,作爲一個程式化`(反引號)和作爲sytlised '(單引號)。當我的意思是unicode open and close quotes。我的腳本頂部有# -*- coding: utf-8 -*-,我也將其粘貼到控制檯中。

回答

1

將注意力集中在造成錯誤r'[`‘’"]*'表達...

>>> r'[`‘’"]*' 
    File "<stdin>", line 1 
    r'[``'"]*' 
      ^
SyntaxError: EOL while scanning string literal 
>>> ur'[`‘’"]*' # with the unicode modifier 
    File "<stdin>", line 1 
    ur'[``'"]*' 
      ^
SyntaxError: EOL while scanning string literal 

如果我在終端不接受Unicode輸入的unicode字符從該解釋`',發生。

所以解決方法是分裂的正則表達式和使用unichr()有兩個報價,2018年和2019年對應的代碼:

>>> r'[`' + unichr(2018) + unichr(2019) + r'"]*' 
u'[`\u07e2\u07e3"]*' 

(和原始字符串修改r''可能不需要這個特定的正則表達式。)

相關問題