반응형
파이썬에서는 translate라는 str 메소드가 존재한다.
보통은 테이블을 이용하여 치환해주는 방식인데 다르게 쓸 수 있는 방법이 존재한다.
import string을 한 후
print string.punctuation을 해보면 여러 기호들이 나타남을 알 수 있다.
이 객체와 translate라는 메소드를 이용하여 단어를 구분할 때 어떻게 쓰는지 알아보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #-*- coding: CP949 -*- import string rhandle = open('romeo-full.txt', 'r') s = rhandle.read() s = s.translate(None, string.punctuation) dic = {} for i in s: if i == ' ' or i == '\n' or ('0' <= i and i <= '9'): continue dic[i.lower()] = dic.get(i.lower(), 0) + 1 tmp = [] for i, j in dic.items(): tmp.append((j,i)) tmp.sort(reverse = True) for i in tmp: print i[1], i[0] // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
위의 파일을 이용한 코드이다.
우선 s 변수에 read를 이용하여 romeo-full.txt에 있는 모든 string을 가져온다.
이제 translate(None, string.punctuation)을 하게 되는데 이 의미는 구두점이 s 스트링에 포함되어 있다면,
모두 제거하라는 의미가 된다.
앞의 None는 테이블이 존재하지 않기에 None로 입력을 해주면 된다.
그 후 dic = {}를 통해 딕셔너리를 생성한다.
아래 포문에서는 공백, 개행, 숫자 등등 필요없는 것들에 대해서는 continue를,
그 외에 이제 영단어에 해당하는 것들을 소문자로 치환하여 모두 넣어준다.
마지막으로 단어가 많이 나온 순으로 정렬하기 위해 tmp에 단어 빈도, 단어를 기준으로 생성해주고, 내림차순 정렬을 해준다.
마지막으로 print를 통해 단어 빈도를 알 수 있게 된다.
반응형
'Basic > Python' 카테고리의 다른 글
파이썬 sort, sorted 정렬 예제 (0) | 2017.07.12 |
---|---|
파이썬 dictionary 전체 메소드 설명 및 예제 코드 (0) | 2017.07.12 |
파이썬 딕셔너리 (0) | 2017.07.08 |
파이썬 10진수에서 2진수로 변환하는 프로그램 (5) | 2017.07.06 |
파이썬 문자열을 입력받았을 때 서로 다른 문자인지 체크하는 코드 (0) | 2017.07.06 |