Programming/python
python - 중복된 문자 줄이기
알 수 없는 사용자
2022. 1. 12. 11:04
반응형
텍스트 전처리를 하다보면 특정 문자가 반복되어서 입력되는 경우가 많은데 의미없이 반복되는 문자를 짧게 줄여주는게 여러 task에서 효율적일 때가 많습니다.
예를 들어 '안녕 ㅋㅋㅋㅋㅋㅋ' 와 같은 텍스트가 입력되었을 때 '안녕 ㅋㅋㅋ' 정도로 줄여주어도 크게 의미가 퇴색되지는 않고 컴퓨터는 좀 더 간결한 형태의 텍스트를 처리해줄 수 있게 됩니다.
간단히 위와 같이 특정 문자가 3회 이상 반복되어서 나올때 이를 3개까지만 남겨두는 코드를 작성해보겟습니다.
먼저 간단히 골격을 만들어보겠습니다.
def text_normalize(text):
normalized_text = text
return normalized_text
text = "안녕 ㅋㅋㅋㅋㅋㅋ"
normalized_text = text_normalize(text)
print(text)
print(normalized_text)
> python text_normalize.py
안녕 ㅋㅋㅋㅋㅋㅋ
안녕 ㅋㅋㅋㅋㅋㅋ
문자열이 중복해서 나오는지를 알 수 있는 방법은 여러가지가 있는데 여기서는 딕셔너리를 이용해 해결해보도록 하겠습니다. 문자열의 문자를 순서대로 살펴보면서 딕셔너리에 값을 하나씩 올리고 그 값이 3이상이 되면 출력 문자에 넣지 않는 방식으로 쉽게 해결할 수 있습니다. 새로운 문자가 나왔을 때 딕셔너리를 초기화하는걸 잊으면 안됩니다.
def text_normalize(text):
count = {}
normalized_text = ""
for c in text:
if c not in count:
count = {c: 1}
else:
count[c] += 1
if count[c] <= 3:
normalized_text += c
return normalized_text
text = "안녕 ㅋㅋㅋㅋㅋㅋ"
normalized_text = text_normalize(text)
print(text)
print(normalized_text)
> python text_normalize.py
안녕 ㅋㅋㅋㅋㅋㅋ
안녕 ㅋㅋㅋ
반응형