Я хочу удалить символы в строке в Python:
string.replace(',', '').replace("!", '').replace(":", '').replace(";", '')...
Но у меня есть много персонажей, которые я должен удалить. Я думал о списке
list = [',', '!', '.', ';'...]
Но как я могу использовать list
для замены символов в string
?
Ответы:
Если вы используете python2 и ваши входные данные являются строками (а не юникодами), абсолютно лучший метод
str.translate
:В противном случае есть следующие варианты для рассмотрения:
A. Переберите тему char по символу, пропустите ненужные символы и
join
получившийся список:(Обратите внимание, что версия генератора
''.join(c for c ...)
будет менее эффективной).Б. Создайте регулярное выражение на лету и
re.sub
с пустой строкой:(
re.escape
гарантирует, что символы любят^
или]
не будут нарушать регулярное выражение).C. Используйте вариант отображения
translate
:Полный код тестирования и тайминги:
Полученные результаты:
(Как примечание, цифра
remove_chars_translate_bytes
может дать нам подсказку, почему индустрия не хотела принимать Unicode в течение столь длительного времени).источник
TypeError: translate() takes exactly one argument (2 given)
. Видимо, он принимает в качестве аргумента диктат.Вы можете использовать
str.translate()
:Пример:
источник
s.translate(dict.fromkeys(map(ord, u",!.;")))
unicode.translate()
метод имеет параметры, отличные отstr.translate()
метода. Используйте вариант в комментарии выше для объектов Unicode.Вы можете использовать метод перевода .
источник
источник
Если вы используете python3 и ищете
translate
решение - функция была изменена и теперь принимает 1 параметр вместо 2.Этот параметр является таблицей (может быть словарем), где каждый ключ - это порядковый номер Unicode (int) искомого символа, а значение является заменой (может быть либо порядковый номер Unicode, либо строка для сопоставления ключа).
Вот пример использования:
источник
Другой подход с использованием регулярных выражений:
источник
Почему не простой цикл?
Кроме того, избегайте именования списков «список». Переопределяет встроенную функцию
list
.источник
Вы могли бы использовать что-то вроде этого
Этот код не является моим собственным и происходит от здесь свою большую статью и dicusses в глубине делает это
источник
Также интересную тему по удалению UTF-8 с ударением образуют строки, конвертирующие char в их стандартные неакцентированные char:
Каков наилучший способ удалить акценты в строке Python Unicode?
Извлечение кода из темы:
источник
Возможно, более современный и функциональный способ достичь того, что вы хотите:
обратите внимание, что для этой конкретной цели это довольно излишне, но как только вам понадобятся более сложные условия, фильтр пригодится
источник
простой способ,
вывод:
this-is-string--foo----bar--tuna---sandwich--is---good
источник
Как насчет этого - один лайнер.
источник
Я думаю, что это достаточно просто и будет делать!
это один из способов сделать это. Но если вам надоело хранить список символов, которые вы хотите удалить, вы можете сделать это, используя порядковый номер строк, через которые вы проходите. порядковый номер является значением ascii этого символа. число ascii для 0 в качестве символа равно 48, а число ascii для нижнего регистра z равно 122, поэтому:
источник
В эти дни я погружаюсь в схему, и теперь я думаю, что хорош в повторении и оценке. Хахаха. Просто поделитесь некоторыми новыми способами:
во-первых, оценить это
во-вторых, повторить это
Эй, не отрицай. Я просто хочу поделиться какой-то новой идеей.
источник
Я думаю о решении для этого. Сначала я бы сделал строку ввода в виде списка. Тогда я бы заменил пункты списка. Затем с помощью команды соединения я верну список в виде строки. Код может быть таким:
Это позволит удалить что-нибудь из строки. Что ты об этом думаешь?
источник
Вот
more_itertools
подход:Здесь мы разбиваем элементы, найденные в
blacklist
, сглаживаем результаты и присоединяемся к строке.источник
Python 3, реализация понимания однострочного списка.
источник
Удалять *%,&@! снизу строка:
источник