Вывод символов после определенного слова python

Допустим, у меня есть текст с объемным количеством данных:

"price":"697.50","quality":"9586.71000000","accuracy":"1001.00","amount":"1001.00000000"
"price":"333.00","quality":"3232.400000","accuracy":"2010.00","amount":"5000.00000000" 

и т.д

Как из него "выудить" минимальное численное значение, отвечающее за "price"?


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

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

Например использовать регулярные выражения

import re

string = '"price":"697.50","quality":"9586.71000000","accuracy":"1001.00","amount":"1001.00000000" "price":"333.00","quality":"3232.400000","accuracy":"2010.00","amount":"5000.00000000"'
numbers = re.findall(r'"price":"([\d.]+)"', string)  # Все цены (str)
numbers = list(map(float, numbers))  # Все цены (float)
print(min(numbers))  # Минимальный price
→ Ссылка
Автор решения: Namerek

Судя по тому, как исходный текст записан в Вашем вопросе, записи находятся каждая на отдельной строке. Исходя из этого предложу следующий вариант решения:

from typing import Dict, List

text = '''"price":"697.50","quality":"9586.71000000","accuracy":"1001.00","amount":"1001.00000000"
"price":"333.00","quality":"3232.400000","accuracy":"2010.00","amount":"5000.00000000"'''


def string_to_items(string: str):
    k, v = string.split(':')
    return k.strip('"'), float(v.strip('"'))


def line_to_dict(line: str):
    return dict(
        map(
            string_to_items,
            line.split(',')
        )
    )

values: List[Dict[str, float]] = list(
    map(
        line_to_dict,
        text.split('\n')
    )
)

print(
    min([elem.get('price') for elem in values])
)

# 333.0

Но если я ошибся и данные записаны в одной строке, тогда безусловно лучше вариант с регуляркой

→ Ссылка
Автор решения: CrazyElf

Вариант с Pandas:

import pandas as pd

text = '''"price":"697.50","quality":"9586.71000000","accuracy":"1001.00","amount":"1001.00000000"
"price":"333.00","quality":"3232.400000","accuracy":"2010.00","amount":"5000.00000000"'''
json_str = '[{' + '},{'.join(text.split('\n')) + '}]'
df = pd.read_json(json_str)
print(df['price'].min())

Вывод:

333.0

Содержание датафрейма df:

price quality accuracy amount
0 697.5 9586.71 1001 1001
1 333.0 3232.40 2010 5000
→ Ссылка