Ответ 1
Самый простой способ - с регулярным выражением
import re
a = 'lkdfhisoe78347834 (())&/&745 '
result = re.sub('[^0-9]','', a)
print result
>>> '78347834745'
Мне была предоставлена задача удалить все нечисловые символы, включая пробелы из текстового файла или строки, а затем напечатать новый результат рядом со старыми символами, например:
До:
sd67637 8
После:
sd67637 8 = 676378
Как я новичок, я не знаю, с чего начать эту задачу. Пожалуйста, помогите
Самый простой способ - с регулярным выражением
import re
a = 'lkdfhisoe78347834 (())&/&745 '
result = re.sub('[^0-9]','', a)
print result
>>> '78347834745'
Прокрутите строку, char на char и включите только цифры:
new_string = ''.join(ch for ch in your_string if ch.isdigit())
Или используйте регулярное выражение в вашей строке (если в какой-то момент вы хотели обрабатывать несмежные группы отдельно)...
import re
s = 'sd67637 8'
new_string = ''.join(re.findall(r'\d+', s))
# 676378
Затем просто print
их:
print(old_string, '=', new_string)
Для этого существует встроенный.
string.translate(s, table [, deletechars])
Удалить все символы из s которые находятся в deletechars (если они есть), а затем перевести символов с использованием таблицы, которая должна содержать 256-символьную строку, дающую перевод для каждого символьного значения, индексированный его порядковым номером. Если table None, то выполняется только шаг удаления символов.
>>> import string
>>> non_numeric_chars = ''.join(set(string.printable) - set(string.digits))
>>> non_numeric_chars = string.printable[10:] # more effective method. (choose one)
'sd67637 8'.translate(None, non_numeric_chars)
'676378'
Или вы можете сделать это без импорта (но для этого нет причин):
>>> chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>[email protected][\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> 'sd67637 8'.translate(None, chars)
'676378'
Вы можете использовать string.ascii_letters
чтобы идентифицировать ваши не-цифры:
from string import *
a = 'sd67637 8'
a = a.replace(' ', '')
for i in ascii_letters:
a = a.replace(i, '')
Если вы хотите заменить двоеточие, используйте кавычки "
вместо двоеточий '
.