2016-07-26 1 views
-2
formatter = "%r %r %r %r" 
print formatter % (1, 2, 3, 4) 
print formatter % (True, False, False, True) 
print formatter % (formatter, formatter, formatter, formatter) 
print formatter % (
"I had this thing.", 
"That you could type up right.", 
"But it didn't sing.", 
"So I said goodnight." 
) 

이 프로그램에서 실수는 없지만 단지 질문입니다. 마지막 출력 행은 개별 부분에 대해 작은 따옴표와 큰 따옴표를 사용합니다. 왜 그렇게 생각하니? 왜 모든 문자열 주위에 큰 따옴표를 사용하지 않기로 결정했는지출력 "그러나 노래하지 않았습니다."

+0

따옴표는 그 반대의 경우도 마찬가지 문자열의 일부로서 작은 따옴표를 포함 할 수 있습니다. 그게 전부 야. –

+5

FWIW, 나는이 질문을 3 ~ 4 번 읽어야 만 당신이 무엇을 묻고 있는지 알아낼 수있었습니다. 나에게 당신이 너무 열심히 노력해서 맑은 것을 보려고 노력하는 대신 "똑똑한"사람이되는 것처럼 느낀다. 좀더 명확하게 말하면 정확한 출력을 게시하고 그것에주의를 끌기 위해 혼란스러운 선을 강조하는 방법을 찾아 낼 것입니다 ... – mgilson

답변

2

파이썬 객체 (가능하면)는 repr을 사용할 때 정확하게 객체를 재구성하는 데 사용할 수있는 방법으로 자신을 나타냅니다. 형식 문자열은 %s이 아닌 %r이므로 str 대신 문자열 repr을 입력해야합니다.

이러한 선택의
"foo'bar" 
'foo\'bar' 
"""foo'bar""" 
'''foo'bar''' 

는, 첫 번째 버전이 보이는 : 그들에 작은 따옴표와 문자열의 경우, repr 표현 유효한 것을 고를 수 ... 내 머리 위로 떨어져 몇이되어 있습니다 그것들이 사용하기로 결정한 것이 가장 좋습니다. 모두 문자열을 따옴표로 묶지 않고 왜 큰 따옴표가 붙은 문자열에도 동일한 문제가있는 이유를 물어볼 수도 있습니다 ...

+0

마지막 줄을 쓰는 더 간단한 방법이 존재합니까'print formatter % ( "나는 이걸 가지고 있었어.", "너는 바로 입력 할 수있어.", "하지만 노래하지 않았다.", "나는 굿나잇을 말했다." )' –

+0

그건 아주 간단합니다. "더 간단하다"는 것이 무엇을 의미하는지 명확히해야합니까? – mgilson

+0

나는이 물건을 간단히 얻고 싶다. 당신이 바로 입력 할 수 있습니다. 당신이 바로 입력 할 수 있습니다. 너는 바로 입력 할 수있다. '(단순 또는 큰 따옴표가 없다) –

2

그것은 중복이며, 문자열의 원시 표현을 사용합니다. 그래서 이미 그 안에 작은 따옴표를 포함하고 있기 때문에 문자열 내부 싱글/더블 qoutes가 두 번 인용 출력을 포함하는 유일한 문자열 "But it didn't sing." 될 것입니다 거기 때문에 이제 "I had this thing." 출력은 단일 또는 이중 인용 것이 문장의 경우

를 보자 : 당신은 % s을 (를) 사용한 경우

, 당신은 따옴표없이 단지 문자열을 볼 것입니다 :)

관련 문제