Как извлечь конкретный словарь на основе определенных ключей с помощью регулярных выражений? - PullRequest
0 голосов
/ 06 марта 2019

У меня есть данные в виде словарей с количеством пар ключ-значение, варьирующихся в каждом словаре. Я пытаюсь извлечь только определенные словари на основе определенных ключей (чтобы извлечь только те словари, которые имеют ключи «A», «B» и «C», не больше и не меньше).

Я попробовал этот код:

import re
pattern = re.compile(r'(\{\"A"\:(.*?\)\,\"B"\:(.*?\)\,\"C"\:(.*\)\})')
test_str = {"A":2.3,"B":3,"C":2.9},{"A":2.1,"B":33,"C":1.2,"D":9,"F":3.4},{"A":1.4,"B":3.3,"C":1.6,"G":3.2,"K":4},
        {"A":4.3,"B":11,"C":93}
for match in re.findall(pattern, test_str):
print(match)

Кажется, это не работает.

Введите:

{"A":2.3,"B":3,"C":2.9},{"A":2.1,"B":33,"C":1.2,"D":9,"F":3.4},{"A":1.4,"B":3.3,"C":1.6,"G":3.2,"K":4},
        {"A":4.3,"B":11,"C":93}

Ожидаемый результат:

{"A":2.3,"B":3,"C":2.9},{"A":4.3,"B":11,"C":93}

1 Ответ

0 голосов
/ 07 марта 2019

Пробовал другое регулярное выражение, на данный момент, похоже, оно работает нормально:

r'({\"A\"\:[0-9]*\.?[0-9]*\,\"B\":[0-9]*\.?[0-9]*\,\"C\"\:[0-9]*\.?[0-9]*})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...