如何使用正则表达式基于特定键提取特定字典?

问题描述 投票:-1回答:1

我有字典形式的数据,每个字典中键值对的数量不同。我试图仅根据特定的键提取特定的字典(仅提取那些具有键“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}
python regex text-processing
1个回答
0
投票

正在尝试不同的正则表达式,截至目前这个似乎工作得很好:

r'({\"A\"\:[0-9]*\.?[0-9]*\,\"B\":[0-9]*\.?[0-9]*\,\"C\"\:[0-9]*\.?[0-9]*})
© www.soinside.com 2019 - 2024. All rights reserved.