Удаление слова из строки Python по фрагменту или шаблону
Строка — это неизменяемый тип в Python, следовательно для каких то изменений, ее необходимо преобразовать в изменяемый тип, например в список. После необходимых изменений , преобразовать список снова в строку.
# исходная строка >>> line = 'остались строки и перенос слова перекресток переоборудование' # делим строку на слова >>> words = line.split(' ') # фрагмент, по которому будем удалять слова >>> fragment = 'пере' # новый список оставшихся слов >>> new_words = [] >>> for word in words: . if fragment not in word: . new_words.append(word) . >>> new_words # ['остались', 'строки', 'и', 'слова'] # собираем строку используя в качестве разделителя пробел >>> ' '.join(new_words) # 'остались строки и слова
Для удаления или изменения строк по шаблону необходимо использовать регулярные выражения и функцию re.sub() . Например удалим все цифры из строки или оставим только цифры.
# исходная строка >>> line = '156 строк и 13 переносов слов в 10 предложениях' >>> import re # удаление цифр из строки >>> re.sub(r'\d+\s?', '', line).strip() # 'строк и переносов слов в предложениях' # удаление слов из строки >>> re.sub(r'[а-я]+\s?', '', line).strip() # '156 13 10'
Удаление повторов слов в строке.
Для удаления повторов слов в строке так же необходимо воспользоваться регулярными выражениями и модулем re . В частности будем использовать группы с захватом и обратные ссылки регулярного выражения..
# исходная строка >>> line = 'Мама мыла мыла раму' >>> import re >>> re.sub(r'(\b\w+)\s+\1', r'\1', line) # 'Мама мыла раму'
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Преобразование строки в число
- Строку в список, кортеж или множество символов
- Одинарные, двойные и тройные кавычки в строке Python
- Вывод специальных символов в строке Python «как есть»
- Объединение и повторение строк
- Индексирование строк
- Использование срезов строк
- Cрез строки Python от заданного символа/знака до конца строки
- Создание макета для печати базовыми методами строк
- Способы форматирования текстовых строк
- Подсчет повторений слов в тексте, деление строки на список слов
- Удаление слова из строки Python по фрагменту или шаблону
- Удаление пунктуации из строки
- Деление строки по заглавным буквам
- Создание отчетов и писем по шаблонам
Как удалить из строки ненужные символы при помощи re?
Есть строка вида ‘ .,Qwertt/werwer/wer qwer qer/qwert /’
Нужно удалить пробелы, запятые, слеши и тп из начала и конца строки при помощи модуля re.
Количество и набор «мусорных» символов в начале и конце произвольное.
Остальные символы среди текста должны остаться без изменений.
Начальный и конечный символы строки должны быть буквой или цифрой.
- Вопрос задан более трёх лет назад
- 780 просмотров
Убираем конкретные символы из строки

С поомщью str.replace мы можем менять какие-то символы на другие. Если мы просто хотим убрать какие-то символы, тогда просто заменяем их на пустую строку. str.replace() будет применять замену ко всем найденным совподениям.
s="Hello$ Python3$" s1=s.replace("$", "") print (s1) # Результат: Hello Python3Если мы можем указать ограничение для количества совпадений, чтобы не убирать все символы.
s="Hello$ Python3$" s1=s.replace("$", "", 1) print (s1) # Результат: Hello Python3$С помощью ' re.sub '
re. sub (pattern, repl, string, count=0, flags=0)
Возвращает строку, полученную путем замены крайних левых неперекрывающихся
совпадений с шаблоном в строке на значение repl. Если совпадения с шаблоном
не найдены, возвращается неизмененная строка
— Из документации Python'а
Если мы хотим убрать символы, то просто заменяем совпадения на пустую строку.
s="Hello$@& Python3$" import re s1=re.sub("[$|@|&]","",s) print (s1) # Результат: Hello Python3
- Заменяемый шаблон → “[ $ | @ | & ]”
- [ ] используется для определения множества
- $ | @ | & → будет искать $ или @ или &
- Заменяем на пустую строку
- Если вышеуказанные символы заменяются найдены, то они заменяются на пустую строку
Убрать все символы, кроме букв
С помощью 'isalpha()'

isalpha() используется для того, чтобы проверять, состоит ли строка только из букв. Возвращает True если является буквой. Мы будем проходить по каждому символу строки и проверять является ли он буквой.
Пример
s="Hello$@ Python3&" s1="".join(c for c in s if c.isalpha()) print (s1) # Результат: HelloPython(c for c in s if c.isalpha())
Перед нами объект генератор, содержащий все буквы из строки:
s1=””.join(c for c in s if c.isalpha())””.join будет соединять все символы в одну строку.
С помощью 'filter()'
s = "Hello$@ Python3&" f = filter(str.isalpha, s) s1 = "".join(f) print(s1)f = filter(str.isalpha, s)
Функция filter() будет применять str.isalpha метод для каждого элемента строки, и если получаем истину , то мы возвращаем элемент. В противном случае - пропускаем.
Функция filter() вернет итератор, содержащий все буквы переданной строки, а join() будем "склеиват" все элементы друг с другом.
С помощью 're.sub()'
s = "Hello$@ Python3$" import re s1 = re.sub("[^A-Za-z]", "", s) print (s1) # Результат: HelloPythonРассмотрим s1 = re.sub(“[^A-Za-z]”, ””, s)
- “[ A-Za-z]”* → Ищет все символы, кроме букв. Если в начале множества указать * , тогда к шаблону будут подходить все те символы, которые НЕ указаны в множестве. (для русских слов используйте [^А-Яа-я] - прим. ред.)
- Все символы, удовлетворяющие шаблону будут заменены на пустую строку.
- Все символы, кроме букв, будут убраны.
Убрать все символы, кроме букв и чисел
С помощью 'isalnum()'

isalnum() используется, когда мы хотим определить состоит строка только из чисел или букв.
Пройдемся по каждому символу строки, что-бы выявить нужные символы.
s = "Hello$@ Python3&" s1 = "".join(c for c in s if c.isalnum()) print(s1) # Результат: HelloPython3С помощью 're.sub()'
s = "Hello$@ Python3&_" import re s1 = re.sub("[^A-Za-z0-9]", "", s) print(s1) # Результат: HelloPython3
- “[^A-Za-z0–9]” → Этот шаблон будет искать все символы, кроме букв и цифр.
- Все найденные символы будут заменены на пустую строку
- Все символы, кроме букв и цифры убраны.
Убрать все числа из строки, с помощью регулярных выражений
С помощью 're.sub()'

s = "Hello347 Python3$" import re s1 = re.sub("[0-9]", "", s) print(s1) # Результат: Hello Python$
- [0-9] - цифры от 0 до 9
- re.sub(“[0–9]”, ””, s) - если есть совпадения, заменяем на пустую строку
Убираем все символы из строки кроме цифр
С помощью 'isdecimal()'
isdecimal() возвращает истину, если все символы строки являются цифрами, в противном случае возвращается ложь.

s = "1-2$3%4 5a" s1 = "".join(c for c in s if c.isdecimal()) print(s1) # Результат: 12345Пороходим по каждому символу строки и проверяем и является ли он цифрой. "".join() соединяет все элементы.
С помощью 're.sub()'
s = "1-2$3%4 5a" import re s1 = re.sub("[^0-9]", "", s) print(s1) # Результат: 12345Рассмотрим s1 = re.sub(“[^0–9]”, ””, s)
- [^0-9] будет искать все символы кроме от 0 до 9
- re.sub(“[^0–9]”, ””, s) все символы кроме цифр будут заменены на пустую строку.
С помощью 'filter()'
s = "1-2$3%4 5a" f = filter(str.isdecimal, s) s1 = "".join(f) print(s1) # Результат: 12345Рассмотрим f = filter(str.isdecimal, s)
Функция filter() будет выполнять str.isdecimal метод для каждого символа, если он возвращает истину, то добовляет его в генератор. Затем генератор распаковывается в готовую строку с помощью метода join() .
Примечание
Строки в Python являются неизменяемыми объектами, поэтому все вышеуказаные методы убирает символы из данной строки и возвращает новую, они не меняют состояние оригинальной строки.
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
По статье задано0 вопрос(ов)
Подписка на обсуждение 4
Подписка на раздел 73Вам это нравится? Поделитесь в социальных сетях!
Удаление символов в строке
Дана строка. Удалите из нее все символы, чьи индексы делятся на 3.
Вводим строку Python
должны получить - yton
s='python' print(s.replace(s[0:6:3],''))писал так,то есть он должен найти эти символы и заменить их на пустоты ,он не удаляет символы которые делятся на 3.
хотя
если вывестиprint(s[0:6:3])то он найдёт эти символы >>>
print(s[0:6:3]) ph,может я что-то не до понимаю))подскажите
Добавлено через 2 минуты
Всё,нашёл как удалить,тупил больше.1 2 3s='python' print(s[1:3],s[4:6],sep='') yton94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Регулярные выражения: удаление всех символов, не являющихся цифрами, а также первого символа "+" в строке
Написать регулярное выражение, в котором производится удаление всех символов, не являющихся.
Удаление ненужных символов в строке
Доброй ночи! Есть скрипт #название файла fileName="cons.txt" r= with open(fileName) as f.Поиск повторяющихся символов в строке S1 и удаление элементов/повторов, описанных в строке S2
Доброго времени суток, есть такой код по заданию нужно: 1.Разработать функцию, которая.Удаление символов в строке
Есть программа, удаляющая все после знака "+"(вместе с ним). Нужно ее переделать так, чтобы она.
Удаление символов в строке
Привет всем! подскажите пожалуйста как можно удалить определенные символы в столбце. Если я ставлю.
5827 / 3478 / 358
Регистрация: 08.02.2010
Сообщений: 7,448В питоне строки неизменяемые, поэтому твое первоначальное решение не могло работать в принципе. Но даже если бы строки были изменяемые, оно бы все равно не работало правильно
А твое окончательное решение будет работать только для строк длиной в шесть символов. Вот так его можно переделать для произвольной строки (и произвольного шага):
1 2 3 4 5 6 7 8 9 10>>> def drop_each(string, num): . return ''.join(string[i+1:i+num] for i in range(0, len(string), num)) . >>> drop_each("Python", 3) 'yton' >>> drop_each("lexis", 3) # Тестируем на другой строке 'exs' >>> drop_each("Python", 4) # Теперь удаляем символы с индексом, кратным 4 'ythn' >>>



