Сопоставление шаблонов Python 3.10 (PEP 634) – подстановочный знак в строкеPython

Программы на Python
Anonymous
Сопоставление шаблонов Python 3.10 (PEP 634) – подстановочный знак в строке

Сообщение Anonymous »

У меня есть большой список объектов JSON, которые я хочу проанализировать в зависимости от начала одного из ключей, а остальные просто подстановочно использовать. Многие клавиши похожи, например «matchme-foo» и «matchme-bar». Существует встроенный подстановочный знак, но он используется только для целых значений, вроде else.
Возможно, я что-то упускаю из виду, но нигде не могу найти решение предложение:
https://docs.python.org/3/whatsnew/3.10 ... n-matching
И еще немного об этом в PEP-636:
https://www.python.org/dev/peps/pep-063 ... -the-cloud -mappings
Мои данные выглядят так:

Код: Выделить всё

data = [{
"id"     : "matchme-foo",
"message": "hallo this is a message",
},{
"id"     : "matchme-bar",
"message": "goodbye",
},{
"id"     : "anotherid",
"message": "completely diffrent event"
}, ...]
Я хочу сделать что-то, что может соответствовать идентификатору, без необходимости составлять длинный список |.
Что-то вроде это:

Код: Выделить всё

for event in data:
match event:
case {'id':'matchme-*'}: # Match all 'matchme-' no matter what comes next
log.INFO(event['message'])
case {'id':'anotherid'}:
log.ERROR(event['message'])
Это относительно новое дополнение к Python, поэтому руководств по его использованию пока не так много.

Подробнее здесь: https://stackoverflow.com/questions/701 ... -in-string

Вернуться в «Python»