как в питоне из строки взять цифры и поместить их в разные переменные, соблюдая условия?

Имеется разный текст к примеру 'Заработная плата от 60 000 до 90 000 руб' или 'до 80 000' или '50 000-70 000'. Необходимо из этих строк взять числа, и поместить в разные переменные, т.е. миним. и максим. ЗП. Например в 1 случае мин. = 60000, макс = 90000 и отдельно вывести валюту, если имеется. Использовала множество вариантов, но ни один не работает, так как надо. вот один из

dd = 'от 80 000 до 90 000 руб.'\
s1=[]\
s2=[]\
b = dd.split(' ')

for i in b:
  #print(i) выводит следующее ['от', '80', '000', 'до', '90', '000', 'руб.']
    while (i == 'до') == True:
         s1.append(i.isnumeric())
     else:
         s2.append(i.isnumeric())

Ответы (1 шт):

Автор решения: insolor

Внутренний цикл while не нужен. Нужна переменная, в зависимости от значения которой мы будем знать с какой стороны от "до" мы находимся. В списки нужно добавлять не результат проверки i.isnumeric() (это всегда True или False), а проверять это условие, и в зависимости от результата добавлять или не добавлять само значение i в один из списков.

Вариант исправления вашего кода:

dd = 'от 80 000 до 90 000 руб.'
s1=[]
s2=[]
b = dd.split(' ')

before_do = True  # Изначально мы до "до"

for i in b:
    if i == 'до':
        before_do = False  # Теперь мы после "до"
    elif i.isnumeric():
        if before_do:
            s1.append(i)
        else:
            s2.append(i)

print(''.join(s1), ''.join(s2))  # 80000 90000

Вообще, можно сразу делить строку по разделителю ("до" или "-" - например, проверить какой из них есть в строке, потом по нему поделить), потом из обеих частей строки вытаскивать числа.

Также для извлечения значений удобно использовать регулярные выражения (будет работать с любым разделителем, кроме пробелов):

import re

dd = 'от 80 000 до 90 000 руб.'
s1, s2 = re.findall(r"[\d ]+", dd)
s1 = s1.replace(" ", "")
s2 = s2.replace(" ", "")
print(s1, s2)

Регулярное выражение немного кривое - будет вытаскивать куски и строки состоящие целиком из пробелов. Моих знаний регулярных выражений недостаточно чтобы это поправить только средствами регулярных выражений, можно просто отфильтровывать такие строки после поиска.

→ Ссылка