2013-10-12 2 views
0

나는 파이썬의 대화 형 콘솔에 다음과 같은 시도 : 여러 줄 문자열 리터럴 구문 분석

>>> """"string""" 
'"string' 
>>> """"string"""" 
SyntaxError: EOL while scanning string literal 

가 나는 시작에 세 지수 및 끝에 세 따옴표를 가지고 있기 때문에 '"string"'을 반환 후자의 경우 """"string""""를 기대합니다. 파이썬은 어떻게 해석합니까?

""""string""" "                             " 
#^^^These three " to start the string literal. The next one counts in the string. 
#The three last ones after the last one are counted as the end. 

을 주목 길을 잃지 " :

+1

파이썬은 왼쪽에서 오른쪽으로 구문 분석하기 때문에; 오른쪽에서 왼쪽으로 문자열의 끝을 찾지 않습니다. –

답변

1

그것은 EOL, "가 완료되지 않은 비 트리플 인용 문자열 다음에 트리플 인용 문자열 """"string"""을 본다.

tokenize 모듈이 무엇을하고 있는지를 보여줄 수 :

s = '""""string""""' 
g = tokenize.generate_tokens(io.StringIO(s).readline) 
t = list(g) 
print(t) 

이것은 '""""string"""'와 STRING 토큰, '"'와 다음 ERRORTOKEN 토큰을 인쇄합니다.

일반적으로 the grammar (내가 먼저 문법을 들여다 본다고 가정합니다)을 해석하는 방법을 알 수 없을 때 이런 질문에 대답하는 가장 좋은 방법은 tokenize, ast 및 friends를 사용하는 것입니다.

1

파이썬으로 해석된다.

당신은 다만 할 수 있습니다

'''"string"'''