티스토리 뷰

개발 언어/파이썬

입력과 출력

jjiiiinn 2024. 7. 9. 23:20
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)

주요 포인트

  1. 파일 사용 후 반드시 닫기 (with 문 권장)
  2. 텍스트와 바이너리 모드 구분하여 사용
  3. JSON은 복잡한 데이터 구조를 쉽게 저장/로드할 수 있는 방법
  4. UTF-8 인코딩 사용 권장

이 내용은 파이썬에서 파일을 안전하게 다루고 구조화된 데이터를 효율적으로 저장/로드하는 기본적인 방법을 제공합니다.

728x90

'개발 언어 > 파이썬' 카테고리의 다른 글

클래스  (1) 2024.07.10
에러와 예외  (0) 2024.07.09
모듈  (0) 2024.07.09
자료구조  (0) 2024.07.09
기타 제어 흐름 도구  (0) 2024.07.09
댓글