Новичок здесь, искал сеть в течение нескольких часов для ответа.Найти все числа в строке в Python 3
string = "44-23+44*4522" # string could be longer
Как мне сделать это список, поэтому выход:
[44, 23, 44, 4522]
Новичок здесь, искал сеть в течение нескольких часов для ответа.Найти все числа в строке в Python 3
string = "44-23+44*4522" # string could be longer
Как мне сделать это список, поэтому выход:
[44, 23, 44, 4522]
Используя регулярные выражения, как предложено AChampion, вы можете сделать следующее.
string = "44-23+44*4522"
import re
result = re.findall(r'\d+',string)
R «» означает простой текст, то «\ д» найти десятичную характер, а + означает 1 или более вхождений. Если вы ожидаете, что плавающие точки в вашей строке не будут разделены, вы можете скопировать с периодом «.».
re.findall(r'[\d\.]+',string)
Единственное, что нужно добавить: если OP нуждается в списке ints 'result = [int (i) для i в re.findall (r '\ d +', string)]' или 'result = [int (i) для i в re.split ('[+ - * /]', string)] ' – AChampion
Здесь у вас есть сделанная вами функция, объясненная и детализированная.
Поскольку вы новичок, это очень простой подход, поэтому его легко понять.
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
Это считается простым? – AChampion
Посмотрите на модуль 're' и' split', где вы можете разделить на операторы. – AChampion
Я * действительно * не считаю, что вы искали сеть в течение нескольких часов. Ввод вашего * точного * вопроса в Google дает мне ответ. – Lynn
Обещаю вам. Пользуясь, по крайней мере, 2 часа на поиск этого. Спасибо за быстрые ответы! – Blab