2015-10-20 3 views
-2

Новичок здесь, искал сеть в течение нескольких часов для ответа.Найти все числа в строке в Python 3

string = "44-23+44*4522" # string could be longer 

Как мне сделать это список, поэтому выход:

[44, 23, 44, 4522] 
+0

Посмотрите на модуль 're' и' split', где вы можете разделить на операторы. – AChampion

+4

Я * действительно * не считаю, что вы искали сеть в течение нескольких часов. Ввод вашего * точного * вопроса в Google дает мне ответ. – Lynn

+0

Обещаю вам. Пользуясь, по крайней мере, 2 часа на поиск этого. Спасибо за быстрые ответы! – Blab

ответ

0

Используя регулярные выражения, как предложено AChampion, вы можете сделать следующее.

string = "44-23+44*4522" 
import re 
result = re.findall(r'\d+',string) 

R «» означает простой текст, то «\ д» найти десятичную характер, а + означает 1 или более вхождений. Если вы ожидаете, что плавающие точки в вашей строке не будут разделены, вы можете скопировать с периодом «.».

re.findall(r'[\d\.]+',string) 
+0

Единственное, что нужно добавить: если OP нуждается в списке ints 'result = [int (i) для i в re.findall (r '\ d +', string)]' или 'result = [int (i) для i в re.split ('[+ - * /]', string)] ' – AChampion

0

Здесь у вас есть сделанная вами функция, объясненная и детализированная.
Поскольку вы новичок, это очень простой подход, поэтому его легко понять.

def find_numbers(string): 
    list = [] 
    actual = "" 
    # For each character of the string 
    for i in range(len(string)): 
     # If is number 
     if "0" <= string[i] <= "9": 
      # Add number to actual list entry 
      actual += string[i] 
     # If not number and the list entry wasn't empty 
     elif actual != "": 
      list.append(actual); 
      actual = ""; 
    # Check last entry 
    if actual != "": 
     list.append(actual); 
    return list 
+0

Это считается простым? – AChampion