1. CSV 파일 다루기

csv 파일을 읽는 방법입니다.
우선
import csv
를 입력해주고
첫번째 방법
# 기본적인 CSV 파일 읽기
with open('csv_test.csv', 'r', encoding='utf-8') as file:
csv_reader = csv.reader(file)
for row in csv_reader:
chat print(row)# 각 행은 리스트로 반환됩니다
# 헤더가 있는 CSV 파일 읽기 (더 편리함)
with open('csv_test.csv', 'r', encoding='utf-8') as file:
csv_reader = csv.DictReader(file)# 첫 번째 행을 헤더로 사용
for row in csv_reader:
print(row['이름'], row['직업'])# 딕셔너리 형태로 접근
두번째 방법
# 헤더가 있는 CSV 파일 읽기 (더 편리함)
with open('csv_test.csv', 'r', encoding='utf-8') as file:
csv_reader = csv.DictReader(file)# 첫 번째 행을 헤더로 사용
for row in csv_reader:
print(row['이름'], row['직업'])# 딕셔너리 형태로 접근
저기서 주의할점은 encoding을 맞춰줘야 엑셀파일이 파이썬 코드로 읽힌다는데 몇번 해봤는데 안되더군요.
일단 보류하고 실전에서 문제생기면 그때 해결하도록 하겠습니다.
2. CSV 파일 만들기
import csv
# 리스트 형태의 데이터 쓰기 (도서 분야 테마)
data = [
['이름', '나이', '직업'],
['유서윤', '34', '서점MD'],
['남지후', '27', '출판편집자']
]
with open('output.csv', 'w', newline='', encoding='utf-8') as file:
csv_writer = csv.writer(file)
csv_writer.writerows(data)# 한 번에 모든 행 쓰기
# 딕셔너리 형태의 데이터 쓰기
data_dict = [
{'이름': '문하린', '나이': 29, '직업': '번역가'},
{'이름': '유서윤', '나이': 34, '직업': '서점MD'}
]
with open('output_dict.csv', 'w', newline='', encoding='utf-8') as file:
fieldnames = ['이름', '나이', '직업']
csv_writer = csv.DictWriter(file, fieldnames=fieldnames)
csv_writer.writeheader()# 헤더 쓰기
csv_writer.writerows(data_dict)# 데이터 쓰기
이런식으로 리스트와 딕셔너리 형태의 csv파일을 만들수 있습니다.
실행해주면
같은 폴더에

이런 폴더가 생기게 되고

이런식으로 폴더가 생기는데
안에 들어가보니 또 깨집니다.... 튜터님이 해결방법을 알려주셨는데 또 깨져서 이것도... 일단 보류하고...
나중에 프로젝트 진행할 때도 깨지면 해결해보겠습니다.
3. JSON 파일 다루기
예시 데이터
{
"이름": "유서윤",
"나이": 34,
"직업": "서점MD",
"취미": ["제빵", "사진", "하이킹"],
"주소": {
"시": "제주",
"구": "제주시"
},
"선호장르": ["에세이", "그래픽노블"]
}
JSON 파일 읽기
|
import json
# JSON 파일 읽기
with open('json_test.json', 'r', encoding='utf-8') as file:
data = json.load(file) # 파일의 JSON을 파이썬 객체로 변환
print(data)
print(data['이름'])# 딕셔너리처럼 접근
# JSON 문자열을 객체로 변환
json_string = '{"이름": "남지후", "나이": 27, "선호장르": ["인문", "소설"]}'
data2 = json.loads(json_string)
print(data2['이름'])
|
JSON 파일 쓰기
|
import json
# 딕셔너리 데이터 준비 (도서 테마)
person_data = {
"이름": "문하린",
"나이": 29,
"직업": "번역가",
"취미": ["동네책방투어", "보드게임"],
"주소": {
"시": "부산",
"구": "해운대구"
},
"최근번역": {"제목": "바닷가의 서점", "언어": "영→한"}
}
# JSON 파일로 저장
with open('person.json', 'w', encoding='utf-8') as file:
json.dump(person_data, file, ensure_ascii=False, indent=2)
# 문자열로 변환
json_string = json.dumps(person_data, ensure_ascii=False, indent=2)
print(json_string)
|
4. 텍스트 파일 처리
| 서점 재고 점검 리스트입니다. 신간 코너 위치를 업데이트하세요. 행사 테이블은 주말에 교체 예정입니다. |
|
# 텍스트 파일 읽기 - 전체 내용
with open('Text_test.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
# 텍스트 파일 읽기 - 한 줄씩
with open('Text_test.txt', 'r', encoding='utf-8') as file:
for line_num, line in enumerate(file, 1):
print(f"{line_num}: {line.strip()}")
# 텍스트 파일 쓰기
with open('output.txt', 'w', encoding='utf-8') as file:
file.write('공지: 오늘 18시에 마감 점검\n')
file.write('테이블 배치도는 3층 탕비실 보관\n')
# 여러 줄 한 번에 쓰기
lines = ['사인회 안내문 업데이트\n', '전자책 체험존 점검\n']
file.writelines(lines) # <-- 여기서 들여쓰기가 끊기면 오류 발생
|
5. 정규표현식 기초

※ 사용법
|
import re
text = "연락처: 019-2468-1357, 이메일: booklover@readers.co.kr, 생년월일: 1988-03-12"
# 패턴 정의
phone_pattern = r'\d{3}-\d{4}-\d{4}'# 전화번호 패턴
email_pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2}'# 이메일 패턴
date_pattern = r'\d{4}-\d{2}-\d{2}'# 날짜 패턴
# 첫 번째 매치 찾기
phone = re.search(phone_pattern, text)
if phone:
print(f"전화번호: {phone.group()}")
# 모든 숫자 추출
numbers = re.findall(r'\d+', text)
print(f"모든 숫자: {numbers}")
# 문자열 치환
masked_text = re.sub(phone_pattern, '019-****-****', text)
print(f"마스킹된 텍스트: {masked_text}")
|