BioPlayground

🧬
목록으로

Python 문자열과 파일 입출력

Python으로 문자열을 자르고 붙이고, 파일을 읽고 쓰는 기본기를 배웁니다.

입문
|
8
|
검증 완료 (2026-07)
문자열 처리파일 입출력openwith문f-string
진행률0/7 (0%)

Python 문자열과 파일 입출력

이 토픽을 마치면

Python으로 문자열을 다양하게 조작하고, 텍스트 파일을 읽고 쓸 수 있습니다.


문자열은 글자의 배열

Python에서 문자열(str)은 글자가 순서대로 나열된 시퀀스입니다. 리스트처럼 인덱싱과 슬라이싱이 됩니다.

python
text = "BioPlayground"
print(text[0]) # 'B' — 첫 글자
print(text[-1]) # 'd' — 마지막 글자
print(text[3:7]) # 'Play' — 3번부터 6번까지
print(len(text)) # 13

문자열은 불변(immutable) 입니다. text[0] = 'b'는 에러가 납니다. 수정하려면 새 문자열을 만들어야 합니다.


자주 쓰는 문자열 메서드

python
msg = " Hello, World! "
msg.strip() # 'Hello, World!' — 양쪽 공백 제거
msg.lower() # ' hello, world! '
msg.upper() # ' HELLO, WORLD! '
msg.replace("World", "Python") # ' Hello, Python! '
# 분리와 결합
csv = "사과,바나나,포도"
fruits = csv.split(",") # ['사과', '바나나', '포도']
"-".join(fruits) # '사과-바나나-포도'
# 포함 여부
"바나나" in csv # True
csv.startswith("사과") # True
csv.count(",") # 2

split()join()은 CSV 파싱, 로그 분석, 데이터 전처리에서 매일 쓰입니다.


f-string — 변수를 문자열에 삽입

Python 3.6부터 도입된 f-string은 문자열 안에 변수를 직접 넣는 가장 깔끔한 방법입니다.

python
name = "김훈"
score = 95.5
# f-string (권장)
print(f"{name}님의 점수: {score}점")
# 김훈님의 점수: 95.5점
# 수식도 가능
print(f"합격 여부: {'합격' if score >= 60 else '불합격'}")
# 합격 여부: 합격
# 소수점 포맷팅
pi = 3.141592
print(f"원주율: {pi:.2f}") # 원주율: 3.14

이전 방식("% s" % name, "{}".format(name))도 동작하지만, f-string이 가독성과 성능 모두 우수합니다.


파일 읽기

python
# 파일 전체 읽기
with open("data.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# 한 줄씩 읽기 (큰 파일에 유리)
with open("data.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip()) # 줄바꿈 제거

with 문은 파일을 열고, 블록이 끝나면 자동으로 닫아줍니다. f.close()를 직접 호출할 필요가 없습니다. with를 쓰지 않으면 파일이 닫히지 않아 메모리 누수가 생길 수 있으므로 항상 with를 사용합니다.


파일 쓰기

python
# 새 파일 생성 (기존 내용 덮어쓰기)
with open("output.txt", "w", encoding="utf-8") as f:
f.write("첫 번째 줄\n")
f.write("두 번째 줄\n")
# 기존 파일에 추가 (append)
with open("output.txt", "a", encoding="utf-8") as f:
f.write("추가된 줄\n")
모드의미파일 없을 때
"r"읽기 전용에러
"w"쓰기 (덮어쓰기)새로 생성
"a"추가 (이어쓰기)새로 생성
"x"생성 (이미 있으면 에러)새로 생성

실전 패턴 — CSV 직접 파싱

python
# CSV 파일을 직접 파싱 (라이브러리 없이)
with open("scores.csv", "r", encoding="utf-8") as f:
header = f.readline().strip().split(",")
print(header) # ['이름', '국어', '영어', '수학']
for line in f:
fields = line.strip().split(",")
name = fields[0]
total = sum(int(x) for x in fields[1:])
print(f"{name}: 총점 {total}")

물론 실무에서는 csv 모듈이나 pandas를 쓰지만, 파일 입출력의 원리를 이해하면 어떤 형식의 데이터든 다룰 수 있습니다.


핵심 정리

문자열과 파일은 프로그래밍의 입출력 통로입니다. 외부 데이터를 읽어오고, 처리 결과를 저장하고, 사람이 읽을 수 있는 형태로 출력하는 모든 과정이 여기서 시작됩니다. split, join, f-string, with open — 이 네 가지를 손에 익히면 대부분의 텍스트 처리가 가능합니다.