Перейти к содержимому

Как удалить все цифры из строки python

  • автор:

Как удалить специальные символы из строки в Python

Из-за использования некоторых специальных символов в коде часто возникают ошибки. Эти специальные символы могут встречаться в строках, а также использоваться с операторами. В этой статье мы расскажем, как удалить специальные символы из строки в Python.

Итак, начнем с открытия оболочки и приступим!

Как удалить специальные символы из строки при помощи join() и isalnum()

Для создания кода вам понадобится файл Python. Имя файла должно иметь расширение .py. После создания файла откройте его в каком-нибудь редакторе. Вы можете использовать любой встроенный редактор, например Vim, Nano или даже текстовый редактор. И, конечно, можно использовать вашу любимую IDE, например, Pycharm или VS Code. Мы воспользуемся консольным редактором nano:

$ touch remove.py $ nano remove.py

Файл успешно открыт в редакторе. В самом верху добавляем строку #!/usr/bin/python3 . Это путь к оболочке, которая должна использоваться для выполнения этого скрипта.

Дальше давайте инициализируем переменную v1 строкового типа, содержащую некоторые специальные и обычные символы. При помощи функции print() мы выводим значение этой переменной в консоль.

После этого мы используем метод isalnum() , чтобы получить только цифро-буквенные символы из этой строки и игнорировать все специальные символы. Все обычные символы будут объединены и сохранены в переменной v2 с помощью метода join() . После чего мы выведем новое получившееся значение с помощью функции print() :

#!/usr/bin/python3 v1 = “HELLO! This, is@an’Example String:” print (“Original string: ”, v1) v2 = ‘’.join(char for char in v1 if char.isalnum()) print (“Updated string: ”, v2)

После запуска нашего скрипта remove.py мы получили исходную строку со специальными символами и обновленную строку без специальных символов, как это можно увидеть ниже:

$ python3 remove.py

Как мы видим, во второй строке все лишние специальные символы удалены. Мы достигли желаемого результата. Теперь давайте посмотрим, как сделать это другим способом.

Удаление специальных символов при помощи join() и filter()

Давайте воспользуемся методом соединения join() . Откройте тот же файл и инициализируйте строку с обычными и специальными символами. Первоначальная строка будет выводиться на экран первой.

Далее мы используем метод join() с функцией filter() для строковой переменной v1 , чтобы отфильтровать символы. В данном случае для сбора только обычных символов из переменной v1 используется метод isalnum() . Затем мы выводим на экран обновленную строку:

#!/usr/bin/python3 v1 = “HELLO! This , is@an’Example String:” print (“Original string: ”, v1) v2 = ‘’.join(filter(str.isalnum, v1)) print (“Updated string: ”, v2)

Результат получается такой же, как в предыдущем примере, хотя здесь мы обошлись без цикла и условий:

$ python3 remove.py

Давайте еще раз обновим код. Мы взяли длинную строку со всеми специальными символами, какие только есть на нашей клавиатуре. Снова воспользуемся теми же функциями join() , filter() и isalnum() . Функцию print() используем для вывода исходной и обновленной строки.

Наш обновленный код будет выглядеть следующим образом:

#!/usr/bin/python3 v1 = “a!b#c$d%e^f&g*h (i)j_k~l`m/n?o.p>q’ r]s[tv=w+x-y\z” print (“Original string: ”, v1) v2 = ‘’.join(filter(str.isalnum, v1)) print (“Updated string: ”, v2)
$ python3 remove.py

Итак, в выводе мы сперва получаем исходную длинную строку со специальными символами, а затем обновленную строку, не имеющую специальных символов. Нужный результат достигнут.

Удаление специальных символов из строки с применением метода sub из пакета re

Давайте воспользуемся функцией sub из пакета re , чтобы удалить специальные символы.

Метод sub() используется для гибкой замены одних символов другими. Синтаксис:

import re result = re.sub(pattern, repl, string, count=0, flags=0) # pattern - строка шаблона регулярного выражения, # repl - строка замены, # string - строка для поиска, # count=0 - число, максимальное число вхождений pattern, # flags=0 - один или несколько флагов.
#!/usr/bin/python3 import re v1 = “HELLO! This , is@an’Example%String:”; print (“Original string: ”, v1); v2 = re.sub(r”[^a-Za-Z0-9]” , “”, v1) print (“Updated string: ”, v2);

Сперва импортируем в код сам модуль re . Далее инициализируем строку и выводим ее на экран при помощи print() .

Затем создадим переменную v2 , в которую сохраним обновленную строку.

Для обновления строки, т.е. удаления специальных символов из исходной, воспользуемся методом sub() .

Внутри метода мы сперва ставим флаг r , благодаря которому не придется экранировать обратную косую черту. (Больше на тему сырых строк и экранирования можно почитать в туториале «Строковые и байтовые литералы», — прим. ред. Pythonist.ru).

Затем в кавычках указываем шаблон. Заданный шаблон [^a-Za-Z0-9] соответствует всем символам, НЕ указанным в наборе (символ ^ в начале набора служит для инвертирования).

После этого указываем, на что нужно заменить указанные символы — на пустую строку. В самом конце указываем строку, в которой нужно искать, — пишем имя переменной.

Таким образом все специальные символы из строки v1 будут заменены пустыми строками, т.е. фактически удалены. Чтобы увидеть результат, пишем еще один print() .

Запустим наш код и получим исходную строку и обновленную:

$ python3 remove.py

Как видите, есть несколько способов удалить специальные символы из строки. И регулярные выражения – один из них. Подробнее про модуль re и регулярные выражения можно почитать в статье «Регулярные выражения в Python».

Заключение

Итак, мы разобрались, как удалить специальные символы из строки в Python. Мы проделали это разными способами: при помощи регулярных выражений, методов join() , filter() и isalnum() . Вы можете использовать тот способ, который вам больше по душе.

Надеемся, данное руководство было вам полезно. Желаем успехов в написании кода!

Удалить из строки все цифры

Удалить из строки все нечетные цифры
На входе: Дана строка, содержит буквы и цифры На выходе: Таже строка в которой убраны все.

Удалить двойные пробелы и переместить все найденные в тексте цифры в конец строки
Удалить двойные пробелы и переместить все найденные в тексте цифры в конец строки.

Если в строке букв больше чем цифр, то из первой половины удалить все буквы, а из второй половины удалить все цифры
Здравствуйте! Дана задача: Дан текстовый файл. Преобразовать строки файла по правилу: если в.

Удалить из каждой строки файла первые K символов (если длина строки меньше K, то удалить из нее все символы)
Дано целое число K и текстовый файл. Удалить из каждой строки файла первые K символов (если длина.

1040 / 575 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
Что именно не получается?
Регистрация: 26.11.2018
Сообщений: 82
belyansky, покажите примеры ввода и вывода

Эксперт Python

1354 / 651 / 207
Регистрация: 23.03.2014
Сообщений: 3,057

1 2 3 4 5 6 7
def digkiller(vvod): res = ''.join([i for i in vvod if not i.isdigit()]) print(res) if __name__ == '__main__': vvod=str(input()) digkiller(vvod)

Просто Лис

Эксперт Python

5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9

ЦитатаСообщение от belyansky Посмотреть сообщение

Используя тип множество
Ну я даже не знаю… Так?

1 2 3
for i in 'my0little11foxy': if i not in {0,1,2,3,4,5,6,7,8,9}: print(i)

4459 / 3212 / 1125
Регистрация: 21.03.2016
Сообщений: 7,949
Рыжий Лис, ну не путай товарища ))) сравнивать строку и число )))

1 2 3
for i in 'my0little11foxy': if i not in {0,1,2,3,4,5,6,7,8,9}: print(i)

я и так голову ломаю при чем тут множество.
Просто Лис

Эксперт Python

5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
Semen-Semenich, ой, ну забыл, что типы разные.

set('0123456789')

Регистрация: 26.11.2018
Сообщений: 82

Есть вариант, если в строке нет повторяющихся элементов, то:

1 2 3 4
s = 'asd145jkl7' digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'} a = set(s).difference(digit) print(''.join(a))

1727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
7esoterik7, Удаляет все цифры, даже если они повторяются.

1 2 3 4 5 6
>>> s = 'a145sd145jkl7' >>> digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'} >>> a = set(s).difference(digit) >>> print(''.join(a)) dkaljs >>>
1 2 3 4
set.difference(*others) -> set set - other - . Return a new set with elements in the set that are not in the others.

Регистрация: 26.11.2018
Сообщений: 82

Viktorrus, я имел ввиду нет повторяющихся ‘alpha’. Иначе
через множество мы удалим не только цифры, но и буквы

1727 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
7esoterik7, Извините, моя ошибка, я сразу не понял.

Эксперт Python

1354 / 651 / 207
Регистрация: 23.03.2014
Сообщений: 3,057

1 2 3 4 5 6 7 8 9 10
def deldigit(mstr,mstr1): for i in mstr: if i not in('0','1','2','3','4','5','6','7','8','9'): mstr1=mstr1+i print(mstr1) if __name__ == '__main__': mstr=input() mstr1 ='' deldigit(mstr, mstr1)

Регистрация: 08.05.2019
Сообщений: 17
Можно использовать функцию filter

print('Результат:', ''.join(filter(lambda x: not(x in set(map(str, range(10)))), input('Введите строку: '))))

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Массив строк в с++. Вывести строки, в которых есть цифры. В каждой строке удалить все цифры
Помогите пожалуйста с задачей ! срочно!! Необходимо написать программу, в которой с клавиатуры.

Из каждой строки удалить все цифры, и не содержащие цифр строки записать в новый список
Здравствуйте. Я полнейший нуб в прологе, заранее извиняюсь, не могли бы вы мне подсказать, как.

Удалить из строки все цифры и дописать их в конец строки
Написать программу, которая читает строку символов с клавиатуры. Необходимо удалить из строки все.

Массивы: вывести строки, в которых есть нечетные цифры, в каждой строке удалить все нечетные цифры
Написать программу, в которой с клавиатуры вводится до 10 символьных строк. Вывести строки, в.

Удалить из строки все цифры
народ, помогите пожалуйсто удалить из строки все цыфры

Удалить все цифры из строки

Мои мысли:
мне кажется, надо составить цикл с 0 до длины строки и, проверяя каждый символ на принадлежность к типу int, удалять его или оставлять. Я не знаю, как делать проверку принадлежности, прошу помочь.

Отслеживать
11 1 1 золотой знак 2 2 серебряных знака 8 8 бронзовых знаков
задан 26 сен 2014 в 17:14
187 2 2 золотых знака 5 5 серебряных знаков 12 12 бронзовых знаков

Уточните, как поступить, если цифра не отделена от строки пробелом: ‘112 sad33d dfdf 21’ или ‘112 sadd 22,3 dfdf 21’

26 сен 2014 в 17:32

Первая строка входного файла содержит предложение, записанное с помощью латинских символов, цифр и знаков препинания. Все непробельные символы, отличные от латинских символов, следует сразу же удалить из текстов. Это условие

26 сен 2014 в 17:34

Исходя из условия задачи, нужно поступить так: import re print re.sub(r'[^a-zA-Z\s]’, », ‘112 sadd dfdf 21 dfheif 1223 12’) Это выражение удалит все символы, кроме пробельных и латинских букв. Но результат будет отличным от того, что в стартовом посте, так как останется несколько пробелов между буквами.

26 сен 2014 в 17:42
А без «регулярок» это реализовать возможно?
26 сен 2014 в 17:48
Конечно, можно.
26 сен 2014 в 17:50

7 ответов 7

Сортировка: Сброс на вариант по умолчанию

re.sub(r'[^\w\s]+|[\d]+', r'',"112 sadd dfdf 21 dfheif 12,23 12").strip() 

Удалит все спецсимволы и числа и в конце почистит пробелы по краям строки.

Отслеживать
11 1 1 золотой знак 2 2 серебряных знака 8 8 бронзовых знаков
ответ дан 26 сен 2014 в 17:37
Александр Молофеев Александр Молофеев
2,346 14 14 серебряных знаков 19 19 бронзовых знаков
Спасибо, а что значат эти вещи: 1) re.sub 2)r’\d+’, r»
26 сен 2014 в 17:41

docs.python.org/2/library/re.html в документации все есть. re.sub — это типа string.replace только по регуляркам ищет и по регуляркам заменяет (можно строить сложные схемы) \d+ — это стандартное правило регулярок — числа ноль и больше раз подряд.

26 сен 2014 в 17:44
В вашем случае останутся символы подчеркивания _
26 сен 2014 в 17:45
name ‘re’ is not defined выдает это
26 сен 2014 в 17:46
re это строка, которая поддается обработке.
28 сен 2014 в 6:31

Регулярное выражение \d+ находит цифры. re.sub() функцию можно использовать, чтобы удалить все цифры из строки, включая Юникод:

import re s = u"standard digits: 123; unicode: \uff11\uff12\uff13." s = re.sub(r"\d+", "", s, flags=re.UNICODE) # -> standard digits: ; unicode: . 

bytes.translate() — это эффективный метод по удалению набора байт (стандартных цифр в данном случае) из строки:

s = b"standard digits: 123;" s = s.translate(None, b"0123456789") # -> standard digits: ; 

Другие способы, например, используя set() со списками включения или str.replace() в цикле (или с reduce() ) более многословны и медленнее.

Как удалить все цифры из строки? (PHP)

Задача: текстовая строка содержит цифры/числа вместе с буквами нужно сделать так, что бы из строки исчезли все цифры. Как оное реализовать?

Лучший ответ

$txt — ваша строка.

Остальные ответы

$string = «fv112s32fv313f2321»;
$new_string = «»;

$new_string = preg_replace(«/[0-9]/», «», $string);

$string = «fv112s32fv313f2321»;
$new_string = «»;

for ($i = 0; $string[$i]; $i++)
<
$new_string .= !is_numeric($string[$i]) ? $string[$i] : «»;
>

цикл перебор по символьно
Похожие вопросы
Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

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

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