2014-06-18 3 views
3

,파이썬 문자열 형식 I 코드에서 이것을보고 설명

print('Job: {!r}, {!s}'.format(5,3)) 

대답은

Job: 5, 3 

{!r}은 어떻게 평가합니까입니까? 특별한 의미가 있습니까?

+2

downvoting 할 자격이 질문에 대한 끔찍한 무엇입니까? 정수의 경우 '! r'은 여기서'! s'와 아무런 차이가 없기 때문에 놀랄 수 있습니다. –

+1

@MartijnPieters이 댓글에 감사 드리며, 일부 사람들은 투표를하기 전에 투표를 선호하지만 아직 해결책을 제시 할 수는 없습니다. – iamshola

+0

귀하의 게시물 *에 * 귀하가 예상 한 정보가 부족합니다. 출력 형식에 차이가 없다는 것에 놀랐던 형식으로 {{! s}'을 (를) 가지고 있다는 사실에서 추론해야했습니다. 명시 적으로 * 왜 * 질문을했는지 또는 문서를 읽었 음을 보여 주면 도움이 될 것입니다. –

답변

9

!r은 보간하기 전의 값으로 repr()을 호출합니다.

정수의 경우 str(), 기본값은 format()repr() 출력은 다릅니다. 문자열과 같은 다른 유형의 경우 차이가 더 잘 보입니다.

>>> print('Repr of a string: {!r}'.format("She said: 'Hello, world!'")) 
Repr of a string: "She said: 'Hello, world!'" 

따옴표가 포함되어 있습니다.

Format String Syntax을 참조하십시오. ! 뒤의 문자는 변환을 값에 적용합니다. 기본값은 변환하지 않지만 값을 repr() 표현 또는 str() 문자열 출력으로 각각 변환하려면 !r 또는 !s을 사용할 수 있습니다. 중 하나를 명시 적 __format__() 방법을 지정하지 않는 형태를 처리 할 때

당신은 일반적으로 변환을 사용하십시오 (예 : bytes을)를 명시 적으로 repr() 출력 (디버그 출력을위한 매우 도움), 또는 때이 서식 할 때 유형의 혼합을 처리 할 수 ​​있습니다.

+0

Martijn, is! for str() ?? – user3273866

+0

@RAJ : 그렇습니다. 나는 답을 이렇게 적어 두었습니다. –

+0

@MartijnThanks, 정말 도움이 답변, 그것은 항상 upwordvote를해야합니다. – user3273866