Python 3의 문자열 형식
Python 2에서 이 작업을 수행합니다.
"(%d goals, $%d)" % (self.goals, self.penalties)
이것의 파이썬 3 버전은 무엇입니까?
저는 온라인으로 예제를 검색해 보았지만 계속해서 파이썬 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
기본 형식을 사용합니다.{:d}
는 십진수 정수 형식의 다음 위치 인수입니다.{0:d}
인덱스가 있는 인수입니다.0
10진수 정수 형식입니다.
인수를 선택할 때 수행할 수 있는 다른 많은 작업(위치 지정 인수 대신 명명된 인수 사용, 필드 액세스 등)과 여러 형식 옵션(숫자 채우기, 수천 개의 구분 기호 사용, 기호 표시 여부 등)도 있습니다.다른 몇 가지 예:
"({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는 새로운 것이 오래된 것보다 훨씬 더 표현력이 뛰어나며, 새로운 코드를 작성할 때마다 사용해야 합니다(물론 오래된 환경을 대상으로 하지 않는 한).
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'
그 라인은 파이썬 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)'
나는 이 접근법이 좋습니다.
my_hash = {}
my_hash["goals"] = 3 #to show number
my_hash["penalties"] = "5" #to show string
print("I scored %(goals)d goals and took %(penalties)s penalties" % my_hash)
괄호에 각각 d와 s가 첨부되어 있습니다.
출력은 다음과 같습니다.
I scored 3 goals and took 5 penalties
"f-strings"는 Python 3.6 이후에 사용할 수 있습니다.
f'({self.goals} goals, ${self.penalties})'
언급URL : https://stackoverflow.com/questions/13945749/string-formatting-in-python-3
'programing' 카테고리의 다른 글
"최대 요청 길이 초과됨" 캐치 (0) | 2023.05.16 |
---|---|
에서 마크업을 주석 처리할 수 있는 방법이 있습니까?ASPX 페이지? (0) | 2023.05.16 |
Swift: '#if DEBUG'와 같은 PRECPURG 플래그를 사용하여 API 키를 구현하는 방법은 무엇입니까? (0) | 2023.05.16 |
ThreadPoolExecutor().map이 ThreadPoolExecutor().submit와 어떻게 다릅니까? (0) | 2023.05.16 |
WP7 응용 프로그램 모음 아이콘이 시뮬레이터에 표시되지 않음(단, 블렌드에서는 작동함) (0) | 2023.05.16 |