티스토리 뷰
728x90
장식적인 출력 포매팅
파이썬에서 출력을 포맷하는 여러 방법을 소개합니다:
1. f-문자열 (포맷 문자열 리터럴)
- 문자열 앞에
f
또는F
를 붙임 - 중괄호
{}
안에 변수나 표현식 삽입
year = 2016
event = 'Referendum'
print(f'Results of the {year} {event}')
2. str.format() 메서드
- 중괄호
{}
안에 포맷 지정자 사용 .format()
메서드로 값 전달
yes_votes = 42_572_654
percentage = 0.4967
print('{:-9} YES votes {:2.2%}'.format(yes_votes, percentage))
3. 수동 문자열 처리
- 문자열 슬라이싱, 연결 등을 사용
- 문자열 메서드 활용 (예:
ljust()
,rjust()
,center()
)
4. repr() 및 str() 함수
str()
: 사람이 읽기 쉬운 형태로 변환repr()
: 인터프리터가 읽을 수 있는 형태로 변환
s = 'Hello, world.'
print(str(s)) # 'Hello, world.'
print(repr(s)) # "'Hello, world.'"
5. string.Template 클래스
$
기호로 자리 표시자 지정- 딕셔너리로 값 치환
from string import Template
t = Template('${name} likes ${food}')
print(t.substitute(name='John', food='pizza'))
주요 포인트
- f-문자열은 간단하고 직관적인 방법
str.format()
은 더 복잡한 포매팅에 유용repr()
은 디버깅에 유용- 문자열 처리 메서드들은 세밀한 제어가 필요할 때 사용
각 방법은 상황에 따라 적절히 선택하여 사용하면 됩니다. 일반적으로 f-문자열이 가장 많이 사용되며, 복잡한 포매팅이 필요한 경우 str.format()
을 사용합니다.
포맷 문자열 리터럴 (f-문자열)
f-문자열은 파이썬에서 문자열 포매팅을 간단하고 직관적으로 할 수 있게 해주는 기능입니다. 주요 특징과 사용법은 다음과 같습니다:
기본 사용법
- 문자열 앞에
f
또는F
접두어를 붙입니다. - 중괄호
{}
안에 파이썬 표현식을 넣습니다.
name = "Alice"
age = 30
print(f"My name is {name} and I'm {age} years old.")
포맷 지정자 사용
:
뒤에 포맷 지정자를 추가할 수 있습니다.
import math
print(f'The value of pi is approximately {math.pi:.3f}.')
# 출력: The value of pi is approximately 3.142.
필드 폭 지정
:
뒤에 숫자를 넣어 최소 문자 폭을 지정할 수 있습니다.
table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
for name, phone in table.items():
print(f'{name:10} ==> {phone:10d}')
변환 지정자
!a
:ascii()
적용!s
:str()
적용!r
:repr()
적용
animals = 'eels'
print(f'My hovercraft is full of {animals!r}.')
# 출력: My hovercraft is full of 'eels'.
표현식 확장 (=)
=
를 사용하여 표현식과 그 값을 함께 출력할 수 있습니다.
bugs = 'roaches'
count = 13
print(f'{bugs=} {count=}')
# 출력: bugs='roaches' count=13
f-문자열은 코드의 가독성을 높이고 문자열 포매팅을 더 쉽게 만들어줍니다. 복잡한 포매팅이 필요한 경우에도 매우 유용하며, 파이썬 3.6 이상에서 사용할 수 있습니다.
문자열 format() 메서드
str.format()
메서드는 파이썬에서 문자열 포매팅을 위한 강력한 도구입니다. 주요 특징과 사용법은 다음과 같습니다:
1. 기본 사용법
print('We are the {} who say "{}!"'.format('knights', 'Ni'))
2. 위치 인자 사용
print('{0} and {1}'.format('spam', 'eggs'))
print('{1} and {0}'.format('spam', 'eggs'))
3. 키워드 인자 사용
print('This {food} is {adjective}.'.format(food='spam', adjective='absolutely horrible'))
4. 위치와 키워드 인자 혼합
print('The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred', other='Georg'))
5. 딕셔너리 사용
table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; Dcab: {0[Dcab]:d}'.format(table))
6. 딕셔너리 언패킹
table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table))
7. vars() 함수와 함께 사용
table = {k: str(v) for k, v in vars().items()}
message = " ".join([f'{k}: ' + '{' + k +'}' for k in table.keys()])
print(message.format(**table))
8. 정렬된 열 출력
for x in range(1, 11):
print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
# 출력
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
...
...
str.format()
메서드는 다양한 방식으로 문자열을 포매팅할 수 있게 해주며, 특히 복잡한 포매팅이 필요한 경우에 유용합니다. 위치 인자, 키워드 인자, 딕셔너리 등을 사용하여 유연하게 포매팅할 수 있습니다.
파이썬의 파일 입출력과 JSON 처리
1. 파일 읽고 쓰기
1.1 파일 열기
- 모드: 'r' (읽기), 'w' (쓰기), 'a' (추가), 'r+' (읽기/쓰기)
- 인코딩: 기본값은 플랫폼 의존적, UTF-8 권장
f = open('workfile', 'w', encoding="utf-8")
1.2 with 문 사용
- 자동으로 파일 닫기 처리
with open('workfile', encoding="utf-8") as f:
read_data = f.read()
1.3 파일 객체 메서드
- read(): 파일 내용 읽기
- readline(): 한 줄 읽기
- write(): 파일에 쓰기
- tell(): 현재 파일 위치 반환
- seek(): 파일 위치 변경
2. 텍스트 모드와 바이너리 모드
- 텍스트 모드: 문자열 처리, 줄 끝 변환
- 바이너리 모드: 바이트 단위 처리, 'b' 추가 (예: 'rb', 'wb')
3. JSON으로 구조적 데이터 저장하기
3.1 JSON 직렬화
import json
x = [1, 'simple', 'list']
json_string = json.dumps(x)
3.2 JSON 파일로 저장
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(x, f)
3.3 JSON 역직렬화
with open('data.json', 'r', encoding='utf-8') as f:
x = json.load(f)
주요 포인트
- 파일 사용 후 반드시 닫기 (with 문 권장)
- 텍스트와 바이너리 모드 구분하여 사용
- JSON은 복잡한 데이터 구조를 쉽게 저장/로드할 수 있는 방법
- UTF-8 인코딩 사용 권장
이 내용은 파이썬에서 파일을 안전하게 다루고 구조화된 데이터를 효율적으로 저장/로드하는 기본적인 방법을 제공합니다.
728x90
댓글