Вы можете удалить все алфавиты от вас строки с str.translate
и ломтиком до количества цифр вы хотите, как этот
import string
def foo(input_string, num):
return input_string.translate(None, string.letters)[:num]
print foo('test120202test34234e23424', 6) # 120202
print foo('ex120202test34234e23424', 6) # 120202
Примечание: Этот простой метод работает только в Python 2.x
Но наиболее эффективный способ должен пойти с itertools.islice
from itertools import islice
def foo(input_string, num):
return "".join(islice((char for char in input_string if char.isdigit()),num))
Это самый эффективный способ, потому что он не должен обрабатывать всю строку перед возвратом результата.
все возможно в Python – Ryan
Почему бы вы сделали это без регулярного выражения? –
вы можете просто измерить значение ascii, если его 0x30-0x39 или что-то еще число (проверьте, думаю, 0x30-39 прав, но я могу ошибаться) – Ryan