나는 파이썬 2에서 이것을한다.
"(%d goals, $%d)" % (self.goals, self.penalties)
이것의 Python 3 버전은 무엇입니까?
온라인에서 예제 검색을 시도했지만 계속 Python 2 버전을 얻었습니다.
나는 파이썬 2에서 이것을한다.
"(%d goals, $%d)" % (self.goals, self.penalties)
이것의 Python 3 버전은 무엇입니까?
온라인에서 예제 검색을 시도했지만 계속 Python 2 버전을 얻었습니다.
답변:
다음은 "새로운"형식 구문에 대한 문서 입니다. 예는 다음과 같습니다.
"({:d} goals, ${:d})".format(self.goals, self.penalties)
goals
및 둘 다 penalties
정수인 경우 (즉, 기본 형식이 괜찮음) 다음과 같이 줄일 수 있습니다.
"({} goals, ${})".format(self.goals, self.penalties)
매개 변수가의 필드이므로 self
단일 인수를 두 번 사용하는 방법도 있습니다 (@Burhan Khalid가 주석에서 언급했듯이).
"({0.goals} goals, ${0.penalties})".format(self)
설명 :
{}
기본 형식으로 다음 위치 인수만을 의미합니다.{0}
0
기본 형식의 index가있는 인수를 의미 합니다.{:d}
십진 정수 형식의 다음 위치 인수입니다.{0:d}
0
십진수 형식의 index가있는 인수입니다 .인수를 선택할 때 (위치 인수 대신 명명 된 인수 사용, 필드 액세스 등) 할 수있는 다른 많은 작업과 많은 형식 옵션 (숫자 패딩, 천 단위 구분 기호 사용, 부호 표시 여부 등)도 있습니다. 몇 가지 다른 예 :
"({goals} goals, ${penalties})".format(goals=2, penalties=4)
"({goals} goals, ${penalties})".format(**self.__dict__)
"first goal: {0.goal_list[0]}".format(self)
"second goal: {.goal_list[1]}".format(self)
"conversion rate: {:.2f}".format(self.goals / self.shots) # '0.20'
"conversion rate: {:.2%}".format(self.goals / self.shots) # '20.45%'
"conversion rate: {:.0%}".format(self.goals / self.shots) # '20%'
"self: {!s}".format(self) # 'Player: Bob'
"self: {!r}".format(self) # '<__main__.Player instance at 0x00BF7260>'
"games: {:>3}".format(player1.games) # 'games: 123'
"games: {:>3}".format(player2.games) # 'games: 4'
"games: {:0>3}".format(player2.games) # 'games: 004'
참고 : 다른 사람들이 지적했듯이 새 형식은 이전 형식을 대체하지 않습니다. 둘 다 Python 3과 최신 버전의 Python 2에서 모두 사용할 수 있습니다. 일부는 선호의 문제라고 말할 수 있지만 IMHO는 이전 버전보다 훨씬 표현력이 뛰어나며 새 코드를 작성할 때마다 사용해야합니다 (물론 이전 환경을 대상으로하지 않는 한).
"({0.goals} goals, ${0.penalties})".format(self)
"conversion rate: {:.2%}".format(self.goals / self.shots)
? 그 자체로 잘 작동합니다 ... (Python 3.4) 거기에 아무것도 없다는 점 f
에 유의하십시오 . 부동 소수점 숫자가 아닌 백분율로 형식화하도록 요청합니다.
"{:.2f}%".format(float_num)
둘 다 잘 작동합니다.
$
이전 형식 구문이나 새에도 여기에 특별한 의미가 없습니다, 따라서 변경, 생성 된 문자열에 존재해야한다.
Python 3.6은 이제 PEP 498을 사용 하여 속기 리터럴 문자열 보간을 지원합니다 . 사용 사례의 경우 새 구문은 간단합니다.
f"({self.goals} goals, ${self.penalties})"
이것은 이전 .format
표준 과 유사 하지만 다음 과 같은 작업을 쉽게 수행 할 수 있습니다 .
>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal('12.34567')
>>> f'result: {value:{width}.{precision}}'
'result: 12.35'
이 줄은 Python 3에서있는 그대로 작동합니다.
>>> sys.version
'3.2 (r32:88445, Oct 20 2012, 14:09:29) \n[GCC 4.5.2]'
>>> "(%d goals, $%d)" % (self.goals, self.penalties)
'(1 goals, $2)'