일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- Outlook
- 안드로이드
- 깃
- 윈도우10
- Excel
- Android
- win32com
- 비주얼베이직
- windows
- 윈도우11
- office
- 파이썬
- 파이썬GUI
- 문자열
- python3
- pandas
- VBA
- 오피스
- 엑셀
- Windows10
- pythongui
- 파이썬3
- Windows11
- git
- 파워포인트
- html
- pyqt5
- 아웃룩
- matlab
- python
Appia의 IT세상
파이썬[Python] 파일에서 특정 단어 포함여부, 특정 단어 찾기, 특정 단어 빈도수 확인하기 본문
파이썬[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] 파일에서 공백 포함, 공백 제외 각각의 글자 수, 단어수 세기( 글자수 계산기 만들기)
혹시 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 댓글과 공감의 저에게 많은 힘이 되고, 다음 포스팅을 하기 위한 원동력입니다. 감사합니다.
'Python > Python 응용' 카테고리의 다른 글
파이썬[Python] 문자열 템플릿(string Template) 활용하기 (0) | 2020.05.13 |
---|---|
파이썬[Python] 폴더의 파일 목록 출력/특정 확장자 파일 목록 출력 (3) | 2020.05.12 |
파이썬[Python] 파일에서 공백 포함, 공백 제외 각각의 글자 수, 단어수 세기( 글자수 계산기 만들기) (7) | 2020.05.07 |
파이썬[Python] 리스트 짝수, 홀수번째 아이템 출력 - 나눗셈, 나머지, 몫 구하기(divmod) 이용 (0) | 2020.05.04 |
파이썬[Python] 리스트 반복문에서 인덱스(index)와 값 같이 출력하기(enumerate) (1) | 2020.05.02 |