Лучший способ удалить повторяющиеся символы (слова) в строке? - PullRequest
2 голосов
/ 12 марта 2009

Каков наилучший способ удаления любых повторяющихся символов и наборов символов, разделенных пробелами в строке?

Я думаю, этот пример объясняет это лучше:

foo = 'h k k h2 h'

должно стать:

foo = 'h k h2' # order not important

Другой пример:

foo = 's s k'

становится:

foo = 's k'

Ответы [ 3 ]

13 голосов
/ 12 марта 2009
' '.join(set(foo.split()))

Обратите внимание, что split () по умолчанию разделяется на все пробельные символы. (например, табуляция, новые строки, пробелы)

Так что, если вы хотите разделить ТОЛЬКО по пробелу, вы должны использовать:

' '.join(set(foo.split(' ')))
10 голосов
/ 12 марта 2009

Вы имеете в виду?

' '.join( set( someString.split() ) )

Это уникальные слова, разделенные пробелом, в произвольном порядке.

6 голосов
/ 12 марта 2009
out = []
for word in input.split():
    if not word in out:
        out.append(word)
output_string = " ".join(out)

Дольше, чем использование набора, но он сохраняет порядок.

Редактировать: Неважно. Я пропустил часть вопроса о том, что порядок не важен. Лучше использовать набор.

...