首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将json数据与Python中的测试混合分析

将json数据与Python中的测试混合分析
EN

Stack Overflow用户
提问于 2022-08-23 19:45:43
回答 3查看 67关注 0票数 0

我有一个包含混合纯文本的json对象的报告,如下所示:

代码语言:javascript
运行
复制
Payload
0x0000: some text
text
{
   "text1": {
      "text2": {
         "text3": "value3",
         "text4": "value4",
         "text5": "value5"
      },
      "text6": "value6",
      "text7": "value7"
   },
   "text8": "value8"
}
Payload 2
0x0001: some other text
other text
{
   "text1": {
      "text2": {
         "text3": "value3",
         "text4": "value4",
         "text5": "value5"
      },
      "text6": "value6",
      "text7": "value7"
   },
   "text8": "value8"
}

我想要做的是读取文件,提取这些json对象,并从每个对象中获取特定的值。问题是报告很大,json对象之间的纯文本并不是每次都包含相同的单词。我尝试的是使用json.loads(.)(失败)和json.dumps(.)它不会忽略这些纯文本字符串。

代码语言:javascript
运行
复制
filedes = open(path, "r")
# Reading the whole file
text = filedes.read()
text = json.dumps(text)

对于如何在不手动删除这些纯文本行的情况下解析这些文本行,有什么想法吗?

EN

Stack Overflow用户

发布于 2022-08-23 20:21:20

您需要解析整个文件并跟踪对象的边界。

代码语言:javascript
运行
复制
import json

values = []

with open('data.txt') as f:
  in_object = False
  data = None
  for line in f.readlines():
    line = line.strip()
    if line == "}":
      if data is not None:
        data.append(line)
        content = '\n'.join(data)
        values.append(json.loads(content))
      in_object = False
    elif line == "{":
      in_object = True
      data = [line]
    else:
      if in_object and data is not None:
        data.append(line)

print(f'Found {len(values)} values')
for v in values:
  print(v)
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73464359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档