Подтвердить что ты не робот

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

Мне была предоставлена ​​задача удалить все нечисловые символы, включая пробелы из текстового файла или строки, а затем напечатать новый результат рядом со старыми символами, например:

До:

sd67637 8

После:

sd67637 8 = 676378

Как я новичок, я не знаю, с чего начать эту задачу. Пожалуйста, помогите

4b9b3361

Ответ 1

Самый простой способ - с регулярным выражением

import re
a = 'lkdfhisoe78347834 (())&/&745  '
result = re.sub('[^0-9]','', a)

print result
>>> '78347834745'

Ответ 2

Прокрутите строку, 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)

Ответ 3

Для этого существует встроенный.

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'

Ответ 4

Вы можете использовать string.ascii_letters чтобы идентифицировать ваши не-цифры:

from string import *

a = 'sd67637 8'
a = a.replace(' ', '')

for i in ascii_letters:
    a = a.replace(i, '')

Если вы хотите заменить двоеточие, используйте кавычки " вместо двоеточий '.