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 
안녕 ㅋㅋㅋㅋㅋㅋ
안녕 ㅋㅋㅋ
반응형