Python, парсинг значения с использованием переменной в регулярном выражении
Язык Python, помогите пожалуйста с парсингом значения из строки.
Имеется переменная с типом данных <class 'list'>, с таким значением:
tickers = [{'symbol': 'BTCUSDT', 'price': '21337.84000000'}, {'symbol': 'XRPUSDT', 'price': '0.00244900'}, {'symbol': 'ETHUSDT', 'price': '52.40000000'}]
На самом деле в строке намного больше валютных пар и цен, я укоротил строку.
Значение переменной tickers обновляется раз в секунду и значения валютных пар могут меняться местами, это сайт их так может отдавать, в итоге значение переменной tickers может выглядеть так:
[{'symbol': 'XRPUSDT', 'price': '0.00244900'}, {'symbol': 'ETHUSDT', 'price': '52.40000000'}, {'symbol': 'BTCUSDT', 'price': '21337.84000000'}]
или например так:
[{'symbol': 'ETHUSDT', 'price': '52.40000000'}, {'symbol': 'BTCUSDT', 'price': '21337.84000000'}, {'symbol': 'XRPUSDT', 'price': '0.00244900'}]
Есть задача получить значение цены для определенной валютной пары, записанной в переменной
para= "BTCUSDT"
Переменная со списком para используется в цикле for, значения переменной меняются
Как проще, регуляркой или json или еще как то, получить значение 21337.84000000 для пары BTCUSDT подставляя значение с валютной парой из переменной para
Ответы (3 шт):
pip install jmespath
import jmespath as jp
data = [{'symbol': 'ETHUSDT', 'price': '52.40000000'},
{'symbol': 'BTCUSDT', 'price': '21337.84000000'},
{'symbol': 'XRPUSDT', 'price': '0.00244900'}]
para = "BTCUSDT"
pricepara = float(
jp.search(
f"[?symbol=='{para}'].price | [0]",
data
) or 'NaN'
)
print(pricepara)
# 21337.84
т.е. основная проблема как в ваш код вместо "[?symbol=='BTCUSDT'].price | [0]", Подставить вместо BTCUSDT значение из переменной, примерно так:
мне нужно немного по другому, но почему то не работает
data = [{'symbol': 'ETHUSDT', 'price': '52.40000000'}, {'symbol': 'BTCUSDT', 'price': '21337.84000000'},
{'symbol': 'XRPUSDT', 'price': '0.00244900'}]
para = "BTCUSDT"
pricepara = float(
jp.search(
"[?symbol=='para'].price | [0]",
data
) or 'NaN'
)
print(pricepara)
помогите пожалуйста с парсингом значения из строки
Имеется переменная с типом данных <class 'list'>
так у вас строка или список?
если это список словарей (как в примере) то можно еще вынуть нужное значение через вспомогательный словарь:
para = "BTCUSDT"
data = [{'symbol': 'ETHUSDT', 'price': '52.40000000'},
{'symbol': 'BTCUSDT', 'price': '21337.84000000'},
{'symbol': 'XRPUSDT', 'price': '0.00244900'}]
pares = {i['symbol']:float(i['price']) for i in data}
print(pares.get(para)) # 21337.84