【问题标题】:Compare list of values with JSON response using python使用 python 将值列表与 JSON 响应进行比较
【发布时间】:2021-09-30 02:41:57
【问题描述】:

在 S3 存储桶中有这个 JSON 响应,我如何使用 python 将所有“文本”值连接到一个字符串中,以便稍后我可以迭代并将这个字符串与列表进行比较。列出类似的内容:

doc = ["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod",
       "Lorem ipsum dolor sit amet, tempor incididunt ut labore et dolore magna aliqua."]
[
  {
    "Blocks": [
      {
        "BlockType": "LINE",
        "Text": "Lorem ipsum dolor sit amet, ",
        "Page": 1
      },
      {
        "BlockType": "LINE",
        "Text": "consectetur adipiscing elit, sed do eiusmod",
        "Page": 5
      },
      {
        "BlockType": "LINE",
        "Text": "tempor incididunt ut labore et dolore magna aliqua.",
        "Page": 10
      }
    ]
  }
]

【问题讨论】:

  • 什么规则告诉你把"Lorem ipsum dolor sit amet, "放在"consectetur adipiscing elit, sed do eiusmod""tempor incididunt ut labore et dolore magna aliqua."前面?例如,告诉您"consectetur adipiscing elit, sed do eiusmod"放在"tempor incididunt ut labore et dolore magna aliqua."前面的规则是什么?

标签: python json amazon-s3 aws-lambda boto3


【解决方案1】:

一个简单的 for each 循环遍历每个 JSON 对象并将每个“行”连接到单个字符串变量应该是诀窍。

combined_line = ""

for block in data["blocks"]:
    combined_line += block["text"]

【讨论】:

  • 更好地使用以节省时间和空间
【解决方案2】:

我不清楚您是如何获得该示例结果的(相同的“文本”值被使用了两次,而后半部分是两个不同的“文本”值?)

这里有类似的东西。

doc = []
json_data = [
  {
    "Blocks": [
      {
        "BlockType": "LINE",
        "Text": "Lorem ipsum dolor sit amet, ",
        "Page": 1
      },
      {
        "BlockType": "LINE",
        "Text": "consectetur adipiscing elit, sed do eiusmod",
        "Page": 5
      },
      {
        "BlockType": "LINE",
        "Text": "tempor incididunt ut labore et dolore magna aliqua.",
        "Page": 10
      }
    ]
  }
]
for block in json_data[0]["Blocks"]:
  doc.append(block["Text"])

print(doc)

【讨论】:

    【解决方案3】:

    您需要遍历 json 响应中的 Blocks 列表,并从每个块中获取 Text 属性并将其附加到列表中。完成后,将该列表转换为字符串。 [我已将列表用于性能目的。]

    json_response = [
      {
        "Blocks": [
          {
            "BlockType": "LINE",
            "Text": "Lorem ipsum dolor sit amet, ",
            "Page": 1
          },
          {
            "BlockType": "LINE",
            "Text": "consectetur adipiscing elit, sed do eiusmod",
            "Page": 5
          },
          {
            "BlockType": "LINE",
            "Text": "tempor incididunt ut labore et dolore magna aliqua.",
            "Page": 10
          }
        ]
      }
    ]
    
    concat_string_list = []
    
    for block in json_response[0]["Blocks"]:
        concat_string_list .append(block["Text"])
    
    print("".join(concat_string_list))
    

    输出:

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmodtempor incididunt ut labore et dolore magna aliqua.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 2018-06-18
      相关资源
      最近更新 更多