Удалить символы, кроме цифр из строки, используя Python? - PullRequest
114 голосов
/ 20 сентября 2009

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

Ответы [ 15 ]

1 голос
/ 17 мая 2019

Вы можете прочитать каждый символ. Если это цифра, включите ее в ответ. str.isdigit() метод - это способ узнать, является ли символ цифрой.

your_input = '12kjkh2nnk34l34'
your_output = ''.join(c for c in your_input if c.isdigit())
print(your_output) # '1223434'
1 голос
/ 16 июля 2018
$ python -mtimeit -s'import re;  x="aaa12333bb445bb54b5b52"' 're.sub(r"\D", "", x)'

100000 циклов, лучшее из 3: 2,48 циклов на цикл

$ python -mtimeit -s'import re; x="aaa12333bab445bb54b5b52"' '"".join(re.findall("[a-z]+",x))'

100000 циклов, лучшее из 3: 2,02 циклов на цикл

$ python -mtimeit -s'import re;  x="aaa12333bb445bb54b5b52"' 're.sub(r"\D", "", x)'

100000 циклов, лучше всего 3: 2,37 циклов на цикл

$ python -mtimeit -s'import re; x="aaa12333bab445bb54b5b52"' '"".join(re.findall("[a-z]+",x))'

100000 циклов, лучшее из 3: 1,97 мксек на цикл

Я заметил, что соединение происходит быстрее, чем sub.

1 голос
/ 20 сентября 2009

Использовать выражение генератора:

>>> s = "foo200bar"
>>> new_s = "".join(i for i in s if i in "0123456789")
0 голосов
/ 18 мая 2019

Я использовал это. 'letters' должен содержать все буквы, от которых вы хотите избавиться:

Output = Input.translate({ord(i): None for i in 'letters'}))

Пример:

Input = "I would like 20 dollars for that suit" Output = Input.translate({ord(i): None for i in 'abcdefghijklmnopqrstuvwxzy'})) print(Output)

Выход: 20

0 голосов
/ 24 января 2018

Не один вкладыш, но очень просто:

buffer = ""
some_str = "aas30dsa20"

for char in some_str:
    if not char.isdigit():
        buffer += char

print( buffer )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...