반응형
파이썬으로 텍스트 파일 내의 모든 알파벳의 개수를 세는 프로그램을 작성했다. (알파벳 개수 세기, 알파벳 빈도수 구하기)
article.txt 파일을 pt로, article_cipher.txt 파일을 ct로 이름을 붙여 불러왔다. lower()을 이용해 텍스트 파일 내의 모든 알파벳을 소문자로 변환했다. 크기 26의 배열 2개를 선언해 for문을 돌리며 해당 알파벳이 나올 때마다 +1을 해주며 각 알파벳의 빈도수를 저장하는 배열을 만들었다. 나는 for문을 이용했지만 Count()을 이용해 알파벳 개수를 구할 수도 있다.
alphabet_frequency.py 소스코드
"""
===================================================
Alphabet Frequency
===================================================
"""
import os, sys
#=== Read Message from a file...
print('Current Working Directory: ', os.getcwd())
pt = open('article.txt', 'rt', encoding='UTF8')
pt_msg = pt.read().lower()
pt.close()
ct = open('article_cipher.txt', 'rt', encoding='UTF8')
ct_msg = ct.read().lower()
ct.close()
Alphabet = 'abcdefghijklmnopqrstuvwxyz'
pt_freq = [0] * 26
ct_freq = [0] * 26
#평문 파일에 대한 알파벳 빈도수 계산
for ch in pt_msg:
if ch in Alphabet:
idx = Alphabet.find(ch)
pt_freq[idx] += 1
#암호문 파일에 대한 알파벳 빈도수 계산
for ch in ct_msg:
if ch in Alphabet:
idx = Alphabet.find(ch)
ct_freq[idx] += 1
#평문, 암호문 파일 각각에 대하여 알파벳 빈도수 출력
print("평문 파일에 대한 알파벳 빈도수")
for i in range(0,26):
print(Alphabet[i], ":", pt_freq[i])
print("\n\n암호문 파일에 대한 알파벳 빈도수")
for i in range(0,26):
print(Alphabet[i], ":", ct_freq[i])
출력 결과
반응형
'Language > Python' 카테고리의 다른 글
[Python] 문자열 공백 제거하기 (replace, strip, lstrip, rstrip) (0) | 2021.07.12 |
---|---|
[Python] txt 파일 읽어와서 암호화하고 저장하기 (시저암호, 파일입출력) (0) | 2021.03.27 |