Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 문장에서 중복 단어 제거하기


문장이 주어졌을 때 그 안에서 중복된 단어를 모두 제거하는 프로그램을 파이썬으로 작성하는 방법을 알아보겠습니다.

예제

입력: I am a peaceful soul and blissful soul.
출력: I am a peaceful soul and blissful.

알고리즘

  1. 1단계: 입력 문장을 공백을 기준으로 분리해 단어 리스트를 만듭니다.
  2. 2단계: 리스트에 담긴 각 문자열을 하나의 문자열로 결합합니다.
  3. 3단계: Counter 메서드로 딕셔너리를 생성합니다. 이때 단어는 키(key), 등장 빈도는 값(value)이 됩니다.
  4. 4단계: 고유한 단어들만 다시 결합해 하나의 문자열로 만듭니다.

예제 코드

from collections import Counter

def remov_duplicates(st):
    st = st.split(" ")
    for i in range(len(st)):
        st[i] = "".join(st[i])
    dupli = Counter(st)
    s = " ".join(dupli.keys())
    print("중복 제거 후 문장 ::>", s)

# 드라이버 프로그램
if __name__ == "__main__":
    st = input("문장을 입력하세요: ")
    remov_duplicates(st)

동작 원리

split()으로 문장을 단어 단위로 나눈 뒤, collections.Counter에 전달하면 각 단어의 등장 횟수가 자동으로 계산됩니다. Counter는 딕셔너리 구조이기 때문에 동일한 단어는 하나의 키로만 존재하며, keys()를 공백으로 join()하면 중복이 제거된 문장을 얻을 수 있습니다. 또한 파이썬 3.7 이상에서는 딕셔너리가 삽입 순서를 유지하므로, 단어들이 처음 등장한 순서대로 출력됩니다.

실행 결과

문장을 입력하세요: i am a peaceful soul and blissful soul
중복 제거 후 문장 ::> i am a peaceful soul and blissful