Python用regex解析JSON格式的文本文件

2024-10-01 15:32:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个格式化为JSON文件的文本文件,但是所有内容都在一行(可能是MongoDB文件)。有人能告诉我如何使用Python regex方法提取值吗?在

文本显示如下:

{"d":{"__type":"WikiFileNodeContent:http:\/\/samplesite.com.‌​au\/ns\/business\/wi‌​ki","author":null,"d‌​escription":null,"fi‌​leAssetId":"034b9317‌​-60d9-45c2-b6d6-0f24‌​b59e1991","filename"‌​:"Reports.pdf"},"cre‌​atedBy":1531,"create‌​dByUsername":"John Cash","icon":"\/Assets10.37.5.0\/pix\/16x16\/page_white_acro‌​bat.png","id":3041,"‌​inheritedPermissions‌​":false,"name":"map"‌​,"permissions":[23,8‌​7,35,49,65],"type":3‌​,"viewLevel":2},{"__‌​type":"WikiNode:http‌​:\/\/samplesite.com.‌​au\/ns\/business\/wi‌​ki","children":[],"c‌​ontent": 

我想得到“fileAssetId”和文件名。我试图用Pythons JSON模块加载like,但是我得到了一个错误

对于FileAssetid,我尝试了以下正则表达式:

^{pr2}$

但我得到了以下034b9317‌,60d9,45c2,b6d6,0f24‌b59e1991

我不知道如何得到显示的数据。在


Tags: 文件comjsonhttptypebusinessnullau
3条回答

尝试将\n添加到要输入到文件的字符串中(\n表示新行)

可以使用python的walk method并用re.match检查每个条目。在

如果您得到的字符串不能转换为python dict,您可以只使用regex:

print re.match(r'.*fileAssetId\":\"([^\"]+)\".*', your_pattern).group(1)

您的示例解决方案:

^{pr2}$

执行此操作将产生:

34b9317‌​-60d9-45c2-b6d6-0f24‌​b59e1991

使用正向前视和后视如何:

(?<=\"fileAssetId\":\")[a-fA-F0-9-]+?(?=\")

捕获fileAssetId

^{pr2}$

与文件名匹配。在

有关regex的详细说明,请查看Regex101-示例。(注意:在示例中,我将两者与OR运算符|结合起来,以同时显示两个匹配项)

要获得所有匹配项的列表,请使用re.findall或{}而不是{}。在

re.findall(pattern, string)返回匹配字符串的列表。在

re.finditer(pattern, string)返回包含对象的迭代器。在

相关问题 更多 >

    热门问题