Как убрать повторяющиеся символы в строке python
Перейти к содержимому

Как убрать повторяющиеся символы в строке python

  • автор:

Удаление повторяющихся символов из строки

Как удалить повторяющиеся символы из строки с помощью Python? Например, допустим, у меня есть строка:

Как сделать веревочку:

ПРИМЕЧАНИЕ: порядок не важен

задан 23 марта ’12, 14:03

@AljoshaBre — используйте кнопку «закрыть» и выберите close as dupe и укажите ссылку. Спасибо — Martin Beckett

@AljoshaBre Ни один из этих ответов не гарантирует поддержания порядка. — Marcin

Ссылка на самом деле уже есть. Всего 4 клика. — ulidtko

15 ответы

Если порядок не имеет значения, вы можете использовать

set() создаст набор уникальных букв в строке, и «».join() соединит буквы обратно в строку в произвольном порядке.

Если заказ делает дело, вы можете использовать dict вместо набора, который, начиная с Python 3.7, сохраняет порядок вставки ключей. (В реализации CPython это уже поддерживается в Python 3.6 как деталь реализации.)

в результате получается строка «mpt» . В более ранних версиях Python вы можете использовать collections.OrderedDict , который был доступен начиная с Python 2.7.

ответ дан 31 мар ’20, в 10:03

+ 1: fromkeys() используется не очень часто, но здесь вы найдете ему отличное применение. — Эрик О Лебигот

print «» .join (OrderedDict.fromkeys (foo)) ^ SyntaxError: недопустимый синтаксис — Флик

@flik Да, как уже отмечалось, приведенный выше код предназначен для Python версии 2.7. — Свен Марнах

Removing duplicate characters from a string

How can I remove duplicate characters from a string using Python? For example, let’s say I have a string:

How can I make the string:

NOTE: Order is not important

16 Answers 16

If order does not matter, you can use

set() will create a set of unique letters in the string, and «».join() will join the letters back to a string in arbitrary order.

If order does matter, you can use a dict instead of a set, which since Python 3.7 preserves the insertion order of the keys. (In the CPython implementation, this is already supported in Python 3.6 as an implementation detail.)

Python-сообщество

Всем привет!
Понадобилось в большом файле удалить повторяющиеся строки.
Нагуглил такой код:

#2 Июль 18, 2014 08:57:22

Удалить дубликаты строк

Seganapa
ты не знаешь что делает count?

#3 Июль 18, 2014 09:03:08

Удалить дубликаты строк

Я знаю что делает count, но как это помогает сравнить строки? По количеству символов что ли?

#4 Июль 18, 2014 09:41:44

Удалить дубликаты строк

Ты же в список строки добавляешь, поэтому count возвращает количество строк в списке.

Это плохой алгоритм.

#5 Июль 18, 2014 10:10:48

Удалить дубликаты строк

Ну я так и подумал. Т.е. Если так получится что в двух строках будут разные слова но одинаковое количество символов, то строки будут считаться одинаковыми. Я прав? Подтвердите мои подозрения ))

В таком случае этот алгоритм мне не подходит. Как правильно сделать?

#6 Июль 18, 2014 10:21:06

Удалить дубликаты строк

А вы код проверили, прежде чем клеймить? На мой взгляд, он совершеннно правильный

Как я могу удалить повторяющиеся слова в строке с Python?

Как я могу удалить вторые два дубликата «calvin» а также «klein» ?

Результат должен выглядеть так

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

16 ответов

Это сортирует набор всех (уникальных) слов в вашей строке по индексу слова в исходном списке слов.

В Python 2.7+ вы можете использовать collections.OrderedDict за это:

Вырезать и вставить из рецептов itertools

Я действительно хотел бы, чтобы они могли сделать модуль из этих рецептов в ближайшее время. Я бы очень хотел быть в состоянии сделать from itertools_recipes import unique_everseen вместо того, чтобы использовать вырезать и вставить каждый раз, когда мне что-то нужно.

Используйте как это:

Пояснение:

.split() — это метод разделения строки на список (без параметров она разделяется пробелами)
set() — это тип неупорядоченных коллекций, которые исключают дубликаты
‘separator’.join(list) — означает, что вы хотите объединить список из параметров в строку с разделителем между элементами

Вы можете использовать набор для отслеживания уже обработанных слов.

Несколько ответов довольно близки к этому, но не совсем так, как я это сделал:

Конечно, если вы хотите немного чище или быстрее, мы можем немного изменить рефакторинг:

Я думаю, что вторая версия является настолько же производительной, насколько вы можете получить в небольшом количестве кода. (Можно использовать больше кода, чтобы выполнить всю работу за одно сканирование всей входной строки, но для большинства рабочих нагрузок этого должно быть достаточно.)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *