Appia의 IT세상

파이썬[Python] 파일에서 특정 단어 포함여부, 특정 단어 찾기, 특정 단어 빈도수 확인하기 본문

Python/Python 응용

파이썬[Python] 파일에서 특정 단어 포함여부, 특정 단어 찾기, 특정 단어 빈도수 확인하기

Appia 2020. 5. 9. 07:00
반응형

파이썬[Python] 파일에서 특정 단어 포함여부, 특정 단어 찾기, 

특정 단어 빈도수 확인하기

 

이번 포스팅은 앞선 포스팅과 조금 유사한 포스팅을 진행해보고자 합니다. 노트 패드 등을 사용해서 저는 경우에 따라 특정 단어에 대해서 바꾸거나 포함되어 있는 횟수를 찾은 경험이 있습니다. 그래서 이번 포스팅은 파일 내에서 특정 단어 찾기, 그 특정 단어의 빈도수를 확인하는 방법에 대해서 살펴보도록 하겠습니다. 

 

이번 포스팅도 여러 과정에 대해서 각 함수로 만들어서 사용하도록 하겠습니다. 다들 호불호가 가릴 수 있지만, 이런 부분에 대해서 함수로 작성해서 사용하시면 나중에 재사용이 가능합니다. 먼저, 파일을 읽어오고 타켓 글자가 포함되어 있는지 여부를 확인 확인겠습니다. 이 부분은 전처리부입니다. 파일을 읽어오고, 특정 글자가 포함되었는지를 확인하는 것입니다. 그리고, 들어 있다면, 그 글자를 몇번 포함되었는지 확인하겠습니다. 

def fileopen(data, target):
 
    with open(data,'r',encoding='UTF8') as file:
    
        text = file.read()
        
        if target in text   :
        
            flag = True
            
            splitdata = text.split()
            
        else :
        
            flag = False
            
            splitdata = None
 
    return flag, splitdata
cs

먼저, data라는 인자를 경로가 포함된 파일 이름으로 받아 옵니다. 이 때 주의 하셔야 할 점이 있는데, 바로 encoding 관련된 부분입니다. 만약 영문으로 작성하신다면, 크게 상관이 없지만, 한글로 된 파일을 읽어오시거나, 관련된 부분을 파싱해야 한다면, 반드시 " encoding = 'UTF8' 옵션을 입력해 주셔야 합니다. 

 

위의 함수는 flag를 통해서 포함 여부를 확인하고, 만약 포함되었다면, 공백으로 나누어서 단어단위로 분리하겠습니다. 만약에 target에 들어간 단어를 포함하지 않는다면, splitdata에 None으로 반환 할 것입니다. 

 

그리고 다음 함수는 앞서 fileopen()함수의 나온 splitdata를 바탕으로 슬라이스하면서(즉 루프를 돌면서) 특정 글자가 포함되어 있는지 확인합니다. 그리고 나서, 포함된 갯수를 계속 추가해주는 형태로 진행합니다. 

def count_word(data,TargetText):
 
    count = 0
    
    for i in data :
    
        if TargetText in i :
        
            count += 1
            
    return  count
cs

그리고 포함된 횟수를 계산하여 반환해줍니다. 

 

그럼 전체 코드를 표현해보겠습니다.

def fileopen(data, target):
 
    with open(data,'r',encoding='UTF8') as file:
    
        text = file.read()
        
        if target in text   :
        
            flag = True
            
            splitdata = text.split()
            
        else :
        
            flag = False
            
            splitdata = None
 
    return flag, splitdata
 
 
def count_word(data,TargetText):
 
    count = 0
    
    for i in data :
    
        if TargetText in i :
        
            count += 1
            
    return  count
 
filepath = "Count_text.txt"
 
TargetText = "글자"
 
flag, splitdata = fileopen(filepath,TargetText)
 
print(TargetText+"라는 단어가 포함된 횟수 : ",count_word(splitdata,TargetText))
cs

 

위와 같은 형태로 코드가 구현되고, 결과는 다음과 같이 나옵니다.

글자가 포함된 횟수 :  4
cs

 

이번 포스팅에서는 특정 파일에서 특정 단어가 포함된 횟수에 대해서 표현해봤습니다. 앞서 포스팅과 유사한 부분이 있고 특정 함수는 상당히 많이 재사용하였습니다. 다음 링크의 포스팅을 함께 보면 조금 더 도움이 될것이라고 생각합니다.

파이썬[Python] 008 함수(Function)

 

파이썬[Python] 008 함수(Function)

함수를 가장 쉽게 표현 하자면, 재사용 하기 위한 기능을 정리하여 향후 재탕하는 코드라고 저는 표현합니다. 물론, 어느 정도 언어적인 거침이 섞이기 했습니다. 주로 흔히 C언어를 많이 하셨던

appia.tistory.com

파이썬[Python] 파일에서 공백 포함, 공백 제외 각각의 글자 수, 단어수 세기( 글자수 계산기 만들기)

 

파이썬[Python] 파일에서 공백 포함, 공백 제외 각각의 글자 수, 단어수 세기( 글자수 계산기 만들기)

저는 블로그를 올리다 보니, 자연스럽게 글자 수에 많은 생각을 하게 되었습니다. 그래서 저의 경우는 네이버 글자 수 세기를 자주 이용하는데, 이번에는 동일한 매커니즘을 가진 글자 수 세기를 구해보고자 합니..

appia.tistory.com

혹시 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 댓글과 공감의 저에게 많은 힘이 되고, 다음 포스팅을 하기 위한 원동력입니다. 감사합니다. 

 

반응형
Comments