Python 如何获取包含内容的字符串的正则表达式
我有json数据,如下所示:Python 如何获取包含内容的字符串的正则表达式,python,json,re,Python,Json,Re,我有json数据,如下所示: '[ {“最大”:0,“最小”:0,“姓名”:“汤姆”,“年龄”:18}, {“max”:0,“min”:0,“name”:“jack”,“age”:28}, ..... ]' 既然我知道name=tom,那么如何通过正则表达式获取包含tom的dict?或者还有其他更好的方法? 像这样 “{“最大”:0,“最小”:0,“姓名”:“汤姆”,“年龄”:18}” 非常感谢 您可以使用反序列化json文件 然后以通常的方式反复阅读字典。像这样: 导入json 从键入导入
'[
{“最大”:0,“最小”:0,“姓名”:“汤姆”,“年龄”:18},
{“max”:0,“min”:0,“name”:“jack”,“age”:28},
.....
]'
既然我知道name=tom,那么如何通过正则表达式获取包含tom的dict?或者还有其他更好的方法?
像这样
“{“最大”:0,“最小”:0,“姓名”:“汤姆”,“年龄”:18}”
非常感谢 您可以使用反序列化json文件 然后以通常的方式反复阅读字典。像这样:
导入json
从键入导入Dict
以open(“file.json”、“r”)作为f:
数据:Dict=json.load(f)
对于数据中的d:
如果d[“name”]=“tom”:
印刷品(d)
请注意,您的JSON文件格式不正确,带有异常的:
。
这是正确的一个:
[
{
"max": 0,
"min": 0,
"name": "tom",
"age": 18
},
{
"max": 0,
"min": 0,
"name": "jack",
"age": 28
}
]
正如其他人也提到的,您的问题看起来使用json更方便 但是,如果您受限于正则表达式,这里有一个简单的正则表达式:
{.+\"name\":\"tom\".+}
假设这是一个目录列表:
lst=[{"max":0,"min":0,"name":"tom","age":18},
{"max":0,"min":0,"name":"jack","age":28}]
然后
输出
[{'max': 0, 'min': 0, 'name': 'tom', 'age': 18}]
您应该使用内置的
json
模块来解析json文件。RegEx
不是最好的选择,因为Json是一种标准格式,有很多解析器!您可以在下面看到如何使用内置的Python Json解析器模块
test.json:
[
{
"max":0,
"min":0,
"name":"tom",
"age":18
},
{
"max":0,
"min":0,
"name":"jack",
"age":28
}
]
import json
with open("test.json", "r") as opened_file:
load_data = json.load(opened_file)
for elem in load_data:
if elem["name"] == "tom":
print(elem)
>>> python3 test.py
{'max': 0, 'min': 0, 'name': 'tom', 'age': 18}
代码:
[
{
"max":0,
"min":0,
"name":"tom",
"age":18
},
{
"max":0,
"min":0,
"name":"jack",
"age":28
}
]
import json
with open("test.json", "r") as opened_file:
load_data = json.load(opened_file)
for elem in load_data:
if elem["name"] == "tom":
print(elem)
>>> python3 test.py
{'max': 0, 'min': 0, 'name': 'tom', 'age': 18}
输出:
[
{
"max":0,
"min":0,
"name":"tom",
"age":18
},
{
"max":0,
"min":0,
"name":"jack",
"age":28
}
]
import json
with open("test.json", "r") as opened_file:
load_data = json.load(opened_file)
for elem in load_data:
if elem["name"] == "tom":
print(elem)
>>> python3 test.py
{'max': 0, 'min': 0, 'name': 'tom', 'age': 18}
另一种解决方案,不使用正则表达式,只使用字符串(假设
s
拥有整个数据):
dict_json
将是{“max”:0,“min”:0,“name”:“tom”,“age”:18}
我认为这应该是可能的,但我只想问,为什么需要使用regex?使用jsonmaybe将JSON转换为Python字典,然后在此字典中搜索会更容易。是的,一方面,为了学习正则表达式的使用,另一方面,可能有很多相似的数据,而不仅仅是一两个元素,遍历的效率会比正则表达式低吗?我不清楚。非常感谢您的回复。我希望我们不必使用遍历,而是使用正则表达式,或者还有其他更方便的方法吗?正如其他答案所指出的,使用json
模块可能会有所帮助。正则表达式还必须“遍历”整个列表,以便找到将某个参数设置为特定值的所有条目。我不确定资源消耗情况。我想使用内置的过滤函数比首先将数据反序列化为json要快,但是json
可能是最干净的解决方案……好吧,非常感谢你的帮助,因为我不知道查找正则表达式的具体过程,所以我问了这个问题。非常感谢你的回答。我希望我们不必使用遍历,而是使用正则表达式,或者还有其他更方便的方法吗?谢谢,太酷了!我最终使用了json。如果您考虑这个答案,请标记为已回答