2016-09-07 11 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'))) 

Iからスクリプトを実行することができますよコマンドプロンプトは何の問題もなく、うまくいきます。私はコンソールに完全なクラスのコードを貼り付けるときしかし、私は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'[`‘’\"]*'r'[``'"]*'。それをur'[`‘’"]*'に置き換えると、SyntaxError: EOL while scanning string literalとなります。

sytlised '(単一引用符)としてPythonコンソールは定型化された`(バッククォート)とすることをを見て、されるようです。私が実際にunicode open and close quotesを意味するとき。私は# -*- coding: utf-8 -*-を私のスクリプトの最上部に持っています。それはコンソールにも貼り付けられます。私はにいる端末がユニコード入力を受け入れない場合

答えて

1

`に、

>>> 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文字の解釈を誤りr'[`‘’"]*'の原因だけ表現に焦点を当て'が発生します。

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

(そしてr''は、おそらくのために必要とされていない生の文字列修飾子:

だからこの問題を回避するには、正規表現と使用2重引用符、2018年および2019に対応するコードでunichr()を分割することですこの特定の正規表現。

関連する問題