string 프로그래밍/Python2016. 7. 7. 12:54
string
https://docs.python.org/3/library/string.html
6.1.3 Format String Syntax
1. 포맷 문자열은 중괄호 {}로 된 치환 필드를 포함한다.
2. 중괄호 안에 포함된 모든 것은 일반 텍스트로 간주되고 출력물에는 변경 없이 그대로 복사된다.
3. 일반 텍스트로 중괄호를 표현한다면 중괄호를 두개 써라. {{ 또는 }}
4. 버전 3.1부터 위치 인수 지정자를 생략할 수 있다. 예) '{} {}' 은 '{0] {1]' 과 같다.
6.1.3.1. Format Specification Mini-Language
1. 일부 포맷 옵션들은 숫자 형에서만 지원된다.
2. 일반 변환에서 빈 포맷 문자열("")은 값에 str()을 호출한 것과 같은 결과를 가진다.
format_spec ::= [[fill
]align
][sign
][#][0][width
][,][.precision
][type
] fill ::= <any character> align ::= "<" | ">" | "=" | "^" sign ::= "+" | "-" | " " width ::=integer
precision ::=integer
type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
3. 유효한 align 값이 지정되면, 모든 문자가 가능한 fill 문자가 앞에 올 수 있고 생략되면 기본값은 공백이 된다.
4. str.format() 메서드를 사용할 때 fill 문자로 중괄호("{" 또는 "}")의 사용은 불가능하다.
11. 그러나 중첩된 교체 필드로 중괄호를 삽입하는 것은 가능하다.
12. 제한은(limitation)은 format() 함수에 영향을 미치지 않는다.
13. 다양한 맞춤(alignment) 옵션의 의미는 다음과 같다.
Option |
Meaning |
'<' |
필드를 이용 가능한 공간 내에서 왼쪽 맞춤한다. (대부분의 객체의 기본값이다.) |
'>' |
필드를 이용 가능한 공간 내에서 오른쪽 맞춤한다. (숫자의 기본값) |
'=' |
1. 패딩이 기호 뒤에 오고 숫자 앞에 온다. '+000000120' 형태에서 프린팅 필드에 사용된다. 2. 이 맞춤 옵션은 숫자 형식에서만 유효하다. 3. '0'이 필드 너비 앞에 바로 오면 기본값이 된다. |
'^' | 필드가 이용 가능한 공간 공간 내에서 가운데에 위치한다. |
14. 최소 필드 너비가 정의되지 않으면 필드 너비는 데이터와 같은 크기가 된다.
15. 그래서 이런 경우 맞춤 옵션이 의미가 없다.
16. sign 옵션은 숫자 형에서만 유효하고 다음 중에 하나가 될 수 있다.
Option |
Meaning |
+ |
양수, 음수 모두에 사용 |
- |
음수에만 사용 (기본값) |
space |
양수에는 앞에 공백이, 음수에는 마이너스 기호가 사용 |
17. '#' 옵션은 '대체 형식'(alternate form)을 변환에 사용되도록 한다.
18. 이 옵션은 integer, float, comples와 Decimal types에만 유효
19. integers인 경우 binary, octal, hexadecimal 출력이면, 각각의 프리픽스를'0b', '0o', '0x' 출력 값에 추가한다.
20. floats, comples와 Decimal의 경우 대체 형식은 변환 결과가 항상 소수점을 포함하도록 한다.
21. 숫자가 뒤에 오지 않더라도 포함한다.
22. 'g', 'G' 변환에서는 뒤에 0들이 제거되지 않는다.
23. ',' 옵션은 천단위 컴마 사용입니다.
24. 지역 인식 구분자는 'n' integer presentation type을 사용.
# 버전 3.1에서 ',' 옵션 추가됨
25. 명시적 alignment가 없다면 width 필드 앞에 0이 오면 기호 인식 제로 패딩을 적용한다.
26. precision은 'f' 및 'F' 로 포맷된 부동 소수점 값의 소수 점 뒤에 또는 'g'와 'G'로 포맷된 부동 소수점 값의 소수 점 앞 뒤에 표시되는 숫자를 decimal 숫자이다.
27. 숫자가 아닌 형식에서 precision은 최대 필드 크기이다. 다시 말해서 필드 내용의 문자의 수이다.
28. integer 값에는 허용되지 않는다.
29. 마지막으로 type은 데이터 타입을 결정한다.
30. 문자열 가능 형식
Type |
Meaning |
's' |
문자열 포맷, 문자열의 기본형이고 생략가능하다. |
None |
's'와 같다. |
31. 정수형 가능 형식
Type |
Meaning |
'b' |
바이너리 포맷. 2진수 |
'c' |
문자. 출력 전에 integer를 해당 유니코드 문자로 변환 |
'd' |
Decimal Integer. 10진수 |
'o' |
Octal 포맷. 8진수 |
'x' |
16진수. 소문자 |
'X' |
16진수. 대문자 |
'n' |
숫자. 현재 로케일 환경을 사용해서 적절한 숫자 구분자 문자를 삽입을 제외하고는 'd'와 같다. |
None |
'd'와 같다. |
31. integers는 아래 목록의 부동 소수점 타입으로 ('n'와 None 제외) 포맷될 수 있다
32. 그러면 float()이 사용되어 integer를 부동소수점 값으로 바꾼다.
33. 부동 소수점 형식과 decimal 의 가능한 값
Type |
Meaning |
'e' |
지수 표기법. 'e' 사용. 기본 자릿수는 6 |
'E' |
지수 표기법. 'E' 사용. |
'f' |
부동 소수점. 기본 소수 자릿수는 6 |
'F' |
부동 소수점. 'f'와 같지만, nan을 NAN으로 ini를 INF로 변환 |
'g' |
일반적인 포맷 |
'G' |
일반적인 포맷. 숫자가 너무 커지면 "E"로 변환되는 것을 빼고는 'g'와 같다. infinity와 NaN은 대문자화 |
'n' |
숫자. 'g'와 같지만 현재 로케일 설정을 사용해서 적절한 구분자를 삽입 |
'%' |
퍼센트. 숫자를 100으로 곱하고 'f' 포맷으로 표시. % 기호가 뒤에 옴 |
None |
'g'와 비슷. 고정 소수점 표기법이 사용되면 소수 점 이후에 최소 하나의 숫자를 가진다 |
예제
1. 여기에서는 str.format() 문법과 구식 %-포맷팅을 비교한다.
2. 대부분의 경우 구식 %-포맷팅과 비슷하지만 % 대신에 {}와 : 가 추가되었다.
3. 예를 들면 %03.2f는 {:03.2f}로 해석될 수 있다.
위치로 인수 접근
인수의 속성으로 접근
인수의 항목으로 접근
%s와 %r을 교체
정렬 및 너비 지정
%+f, %-f, % f를 교체 그리고 사인 지정
%x와 %o를 교체하고 값을 다른 베이스로 변환
천 단위 구분자로 컴마 사용
퍼센트 표현
타입 지정 포맷팅
중첩된 인수 및 더 복잡한 예제