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

Рейтинг: 2Ответов: 5Опубликовано: 26.09.2014

Вводится строка. Как из нее удалить все цифры?

Вот, к примеру, вводится:

112 sadd dfdf 21 dfheif 1223 12

Надо, чтобы выводило:

sadd dfdf dfheif

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

Ответы

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

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

▲ 3

Регулярное выражение \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()) более многословны и медленнее.

▲ 2

Без регулярок:

str1='112 sadd dfdf 21 dfheif 1223 12'  
str2=''  
for c in str1:  
   if c not in ('0','1','2','3','4','5','6','7','8','9'):  
      str2=str2+c
▲ 2

Можно еще так

for d in '1234567890':
    s=s.replace(d, '')
s.strip(' ')
while s.find('  ') != -1:
    s = s.replace('  ', ' ')
▲ 1
S = 'ABC 321 ABC 567ccc'
s = ' '.join([x for x in S if not x.isdigit()])
print(s)