python2.6부터 문자열 형식 지정을 위한 새로운 함수 str.format()이 추가되었으며 이는 매우 강력합니다. 그렇다면 이전의 % 형식 문자열과 비교할 때 어떤 이점이 있습니까? 그 수줍음을 공개해보자.
구문
%를 {}으로 대체하고 다음과 같이 합니다.
위치 메서드 형식 지정
>>> '{}.{}'.format('pythontab', 'com') 'pythontab.com' >>> '{}.{}.{}'.format('www', 'pythontab', 'com') 'www.pythontab.com' >>> '{1}.{2}'.format('www', 'pythontab', 'com') 'pythontab.com' >>> '{1}.{2} | {0}.{1}.{2}'.format('www', 'pythontab', 'com') 'pythontab.com | www.pythontab.com'
문자열 형식 함수는 무제한 매개변수를 허용할 수 있고, 매개변수 위치는 순서대로 유지될 필요가 없으며, 매개변수를 사용하거나 여러 번 사용할 수 없습니다. 이는 매우 유연합니다.
참고: python2에서는 {}를 비워둘 수 없습니다. .6, python2 버전 7 이상을 사용할 수 있습니다.
키워드 인수별
>>> '{domain}, {year}'.format(domain='www.pythontab.com', year=2016) 'www.pythontab.com, 2016' >>> '{domain} ### {year}'.format(domain='www.pythontab.com', year=2016) 'www.pythontab.com ### 2016' >>> '{domain} ### {year}'.format(year=2016,domain='www.pythontab.com') 'www.pythontab.com ### 2016'
객체 속성별
>>> class website: def __init__(self,name,type): self.name,self.type = name,type def __str__(self): return 'Website name: {self.name}, Website type: {self.type} '.format(self=self) >>> print str(website('pythontab.com', 'python')) Website name: pythontab.com, Website type: python >>> print website('pythontab.com', 'python') Website name: pythontab.com, Website type: python
첨자별
>>> '{0[1]}.{0[0]}.{1}'.format(['pyhtontab', 'www'], 'com') 'www.pyhtontab.com'
이러한 편리한 "매핑" 방법을 사용하면 게으름을 해결하는 도구가 됩니다. 기본적인 Python 지식을 통해 목록과 튜플은 함수의 일반 매개변수로 "분리"될 수 있고, dict는 (및 *를 통해) 함수의 키워드 매개변수로 분리될 수 있음을 알 수 있습니다. 따라서 목록/튜플/딕트를 매우 유연하게 형식 함수에 쉽게 전달할 수 있습니다.
형식 한정자
다음과 같은 다양한 "형식 한정자" 세트가 있습니다(구문은 : 기호가 있는 {}입니다).
패딩 및 정렬
패딩은 정렬과 함께 사용되는 경우가 많습니다.
^ 및 는 각각 가운데 정렬, 왼쪽 정렬, 오른쪽 정렬되며 그 뒤에 너비
: 패딩 뒤에 오는 문자는 하나의 문자만 가능합니다. 지정하지 않으면 기본적으로 공백으로 채워집니다. f 유형은 f
여기서 .2는 길이 2의 정밀도를 나타내고 f는 float 유형을 나타냅니다.
기타 유형
>>> '{:>10}'.format(2016) ' 2016' >>> '{:#>10}'.format(2016) '######2016' >>> '{:0>10}'.format(2016) '0000002016'주로 기본인 b, d, o, x는 각각 2진수, 10진수, 8진수, 16진수입니다.
>>> '{:.2f}'.format(2016.0721) '2016.07'은 금액을 천 단위 구분 기호로 사용할 수도 있습니다.
포맷 기능도 너무 강력하고, 기능도 많이 있으니 한번 해보세요.
>>> '{:b}'.format(2016) '11111100000' >>> '{:d}'.format(2016) '2016' >>> '{:o}'.format(2016) '3740' >>> '{:x}'.format(2016) '7e0' >>>