2016-09-07 3 views
1

줄 연속 문자 후 예상치 못한 문자가이 방법으로 정의 된 클래스가 있습니다파이썬 오류 : 나는 파이썬 스크립트를 가지고

@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'[`‘’\"]*'r'[``'"]*'입니다. 이를 ur'[`‘’"]*'으로 바꾸면 SyntaxError: EOL while scanning string literal이됩니다.

파이썬 콘솔은 그 양식에 일치시키는 ` (역 따옴표)로 을보고하고 sytlised ' (작은 따옴표)로 것 같다. 내가 정말로 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 

... 에서 유니 코드 문자의 해석 오류 r'[`‘’"]*'의 원인이 단지 표현에 초점 '이 발생합니다.

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

(그리고 r'' 아마 필요하지 않습니다 원시 문자열 수정 :

는 그래서 해결 방법은 정규식과 사용하는 두 개의 따옴표, 2018 및 2019에 해당하는 코드로 unichr()을 분할하는 것입니다 이 특정 정규식.)

관련 문제