파일 입출력 연습문제
파일 입출력 연습문제입니다. CSV 파일을 읽어 데이터를 처리하고 결과를 다시 파일에 저장하는 실습을 진행합니다.
3. 파일 입출력 연습문제
3.1 문제
student.csv에는 아래와 같은 텍스트가 담겨있습니다.
학년,반,번,이름,국어,영어,수학,사회
3,3,1,licat,90,80,30,40
3,3,2,mura,80,70,60,30
3,3,3,binky,30,80,70,30학년,반,번,이름,국어,영어,수학,사회
3,3,1,licat,90,80,30,40
3,3,2,mura,80,70,60,30
3,3,3,binky,30,80,70,30학생들의 평균을 구해 아래와 같이 student.csv에 출력되게 해주세요. xx라 표기된 곳에 평균 값이 들어가야 합니다.
학년,반,번,이름,국어,영어,수학,사회,평균
3,3,1,licat,90,80,30,40,xx
3,3,2,mura,80,70,60,30,xx
3,3,3,binky,30,80,70,30,xx학년,반,번,이름,국어,영어,수학,사회,평균
3,3,1,licat,90,80,30,40,xx
3,3,2,mura,80,70,60,30,xx
3,3,3,binky,30,80,70,30,xx3.2 정답 코드
s = ''
with open('student.csv', 'r') as f:
lines = f.readlines()
s += lines[0][:-1] + ',평균'
for i in lines[1:]:
data = i.split(',')
s += f'\n{i.strip()},{sum(map(int, data[4:])) / 4}'
with open('student.csv', 'w') as f:
f.write(s)s = ''
with open('student.csv', 'r') as f:
lines = f.readlines()
s += lines[0][:-1] + ',평균'
for i in lines[1:]:
data = i.split(',')
s += f'\n{i.strip()},{sum(map(int, data[4:])) / 4}'
with open('student.csv', 'w') as f:
f.write(s)3.2.1 코드 설명
student.csv파일을 읽기 모드로 열어 모든 줄을 읽습니다.- 첫 번째 줄(헤더)에 '평균' 컬럼을 추가합니다.
- 나머지 줄에서 국어, 영어, 수학, 사회 점수(인덱스 4부터)를 추출하여 평균을 계산합니다.
- 각 줄에 계산된 평균을 추가합니다.
- 최종 결과를
student.csv파일에 다시 씁니다.