Удаление повторяющихся символов из строки
Как удалить повторяющиеся символы из строки с помощью 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. — Свен Марнах
How can I remove duplicate words in a string with Python?
How can I remove the second two duplicates «calvin» and «klein» ?
The result should look like
only the second duplicates should be removed and the sequence of the words should not be changed!
16 Answers 16
This sorts the set of all the (unique) words in your string by the word’s index in the original list of words.
In Python 2.7+, you could use collections.OrderedDict for this:
Cut and paste from the itertools recipes
I really wish they could go ahead and make a module out of those recipes soon. I’d very much like to be able to do from itertools_recipes import unique_everseen instead of using cut-and-paste every time I need something.
Explanation:
.split() — it is a method to split string to list (without params it split by spaces)
set() — it is type of unordered collections that exclude dublicates
‘separator’.join(list) — mean that you want to join list from params to string with ‘separator’ between elements
You can use a set to keep track of already processed words.
Several answers are pretty close to this but haven’t quite ended up where I did:
Of course, if you want it a tiny bit cleaner or faster, we can refactor a bit:
I think the second version is about as performant as you can get in a small amount of code. (More code could be used to do all the work in a single scan across the input string but for most workloads, this should be sufficient.)
Как удалить пробелы из строки в Python
Есть несколько способов удалить пробелы из строки в Python. Python String неизменяем, поэтому мы не можем изменить его значение. Любая функция, которая управляет строковым значением, возвращает новую строку, и мы должны явно назначить ее строке, иначе строковое значение не изменится.
Допустим, у нас есть пример строки, определенной как:
Эта строка имеет разные типы пробелов, а также символы новой строки.
Давайте посмотрим на различные функции для удаления пробелов.
strip()
Строковая функция strip() удаляет начальные и конечные пробелы.
Если вы хотите удалить только начальные или конечные пробелы, используйте вместо них функцию lstrip() или rstrip().
replace()
Мы можем использовать replace(), чтобы удалить все пробелы из строки. Эта функция также удалит пробелы между словами.
join() с split()
Если вы хотите избавиться от всех повторяющихся пробелов и символов новой строки, вы можете использовать функцию join() с функцией string split().
translate()
Если вы хотите избавиться от всех пробелов, а также от символов новой строки, вы можете использовать строковую функцию translate().
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
Удалить дубликаты строк
А вы код проверили, прежде чем клеймить? На мой взгляд, он совершеннно правильный