반응형
수능에 나오는 영어 지문을 input.txt에 저장하고 사용자가 입력하는 단어가 나오는 빈도를 계산하는 프로그램을 작성해보자.
infile = open('input.txt', 'r', encoding='UTF8')
search_word = input('단어 입력: ')
word_dic = {}
for line in infile:
line = line.rstrip()
word_list = line.split()
for word in word_list:
word = word.lower()
word = word.strip(',')
word = word.strip('.')
if word in word_dic:
word_dic[word] += 1
else:
word_dic[word] = 1
if search_word in word_dic:
print(search_word + '빈도: ' + str(word_dic[search_word]))
else:
print(search_word + '빈도: 0')
infile.close()
▶ infile = open('input.txt', 'r') : input.txt 파일을 읽기 모드로 열어줌
▶ word_dic = {} : 입력 파일에서 추출한 단어와 그 단어의 빈도를 저장할 word_dic라는 빈 딕셔너리 생성
★ encoding = 'UTF8'을 붙이지 않으면 cp949 코덱으로 인코딩 된 파일을 읽어들일 때 오류 발생 ★
for line in infile:
line = line.rstrip()
word_list = line.split()
▶ 입력 파일로부터 연설문을 한 문단(줄 바꿈이 발생하기 전)씩 가져와 단어별로 분리함
→ 반복문과 rstrip()을 사용해 리스트 형태로 저장하고 리스트에 저장된 문단을 strip()을 이용해 단어별로 분리
for word in word_list:
word = word.lower()
word = word.strip(',')
word = word.strip('.')
▶ 분리된 단어를 모두 영어 소문자로 바꾸고, 단어와 붙어 있는 콤마(,)와 마침표(.)를 삭제하는 데이터 선처리 작업을 함
if word in word_dic:
word_dic[word] += 1
else:
word_dic[word] = 1
▶ 단어별 빈도를 카운트 하는 작업을 하게 됨
→ word_dic 딕셔너리에 해당 단어가 없으면 딕셔너리에 key를 추가하고 값을 1로 가짐
→ 만약 word_dic 딕셔너리에 해당 단어가 있다면 해당 단어키의 값을 1씩 증가시킴
if search_word in word_dic:
print(search_word + '빈도: ' + str(word_dic[search_word]))
else:
print(search_word + '빈도: 0')
▶ word_dic 딕셔너리에 사용자가 찾고자 입력한 단어가 존재한다면 단어의 빈도가 몇 회인지 출력
→ 그렇지 않으면 단어의 빈도가 0임을 출력
▶ 실제 2021학년도 수능 영어(홀수형) 시험지 40번 문제 지문을 사용
▶ 40번 지문의 내용을 input.txt 파일에 저장함
반응형
'Language > Python' 카테고리의 다른 글
[ Python ] tkinter 위젯 (0) | 2021.09.04 |
---|---|
[ Python ] 모듈과 라이브러리 개념 정리 (0) | 2021.09.04 |
[ Python ] 합계와 평균 계산 후 다른 파일에 저장하기 프로그램 (0) | 2021.09.04 |
[ Python ] 파일 내용 삭제 프로그램 (0) | 2021.09.04 |
[ Python ] 행 맨 게임 프로그램 (0) | 2021.09.04 |