2013-09-19 1 views
0

Я пытаюсь выяснить способ извлечь все символы из строки ('.', ',', 'abcdefghijklmnopqrstvwxyz', '/', '\' и т.д ...) и изолировать цифры например:Как извлечь все символы из строки, чтобы изолировать целые

, если у меня есть вход:

hey.44.6 how a8re you99? -.23 4 

Моя программа должна быть в состоянии извлечь каждую цифру: 44, 6, 8, 99, 23 и 4 то дайте мне число целых чисел, которые имеет строка (у этого есть 6) и сумма чисел.

У меня очень тяжелое время, даже начав этот вопрос, и я просмотрел множество вариантов, включая re. Если бы кто-то помог мне даже разобраться с этим, он был бы весьма признателен.

+4

Добро пожаловать на переполнение стека! Похоже, вы хотите, чтобы мы написали вам код. Хотя многие пользователи готовы создавать код для кодера, терпящего бедствие, они обычно помогают только тогда, когда плакат уже попытался решить проблему самостоятельно. Хорошим способом продемонстрировать это усилие является включение кода, который вы написали до сих пор, пример ввода (если он есть), ожидаемый вывод и вывод, который вы фактически получаете (вывод консоли, трассировки стека, ошибки компилятора - все, что угодно применимо). Чем больше деталей вы предоставляете, тем больше ответов вы получите. –

+0

Похоже, вы хотите найти части своей строки, которые выглядят как целые числа. «Извлечь всех персонажей» почти наверняка не то, что вы хотите сделать. У вас есть последовательность всех символов прямо там - это строка. Фильтрация вашей строки только на цифры также не используется, поскольку вы потеряете границы между числами. – user2357112

ответ

3

Вы можете сделать это с помощью re. Вот один из способов:

>>> re.findall("[0-9]+", s) 
['44', '6', '8', '99', '23', '4'] 
1

Возможно быстрее, чем повторно:

def numbers_in_string(string): 
    digitbuffer = '' 
    for char in string: 
     if char.isdigit(): 
      digitbuffer += char 
     elif digitbuffer: 
      yield int(digitbuffer) 
      digitbuffer = '' 
    if digitbuffer: 
     yield int(digitbuffer) 

>>> STRING = 'hey.44.6 how a8re you99? -.23 4'   
>>> print(list(numbers_in_string(STRING))) 
[44, 6, 8, 99, 23, 4] 
Смежные вопросы