You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中解析字典并清理message字段冗余内容?

问题描述

我有如下格式的字典数据:

{
  "json_response": [
    {
      "message": "The value is 1505. xxxxxxx: xxxxxx: This is a big value. xxxxx.",
      "value": "1505"
    },
    {
      "message": "The value is 5. xxxxxxx: xxxxxxx: This is a small value. xxxxx.",
      "value": "5"
    },
    {
      "message": "The value is 500. xxxxxxx: xxxxxxx: This is a medium value. xxxxx.",
      "value": "500"
    }   
  ]
}

需要对其中的message字段进行解析,去除冗余内容后得到如下目标输出:

{
  "json_response": [
    {
      "message": "The value is 1505. This is a big value.",
      "value": "1505"
    },
    {
      "message": "The value is 5. This is a small value.",
      "value": "5"
    },
    {
      "message": "The value is 500. This is a medium value.",
      "value": "500"
    }   
  ]
}
实现方案

可以用Python快速处理,这里提供两种简单的实现方式:

方法一:字符串分割法(格式固定时优先使用)

利用字符串分割提取需要保留的部分,逻辑简单直接:

original_data = {
  "json_response": [
    {
      "message": "The value is 1505. xxxxxxx: xxxxxx: This is a big value. xxxxx.",
      "value": "1505"
    },
    {
      "message": "The value is 5. xxxxxxx: xxxxxxx: This is a small value. xxxxx.",
      "value": "5"
    },
    {
      "message": "The value is 500. xxxxxxx: xxxxxxx: This is a medium value. xxxxx.",
      "value": "500"
    }   
  ]
}

# 遍历每个元素处理message字段
for item in original_data["json_response"]:
    # 按句号分割字符串
    parts = item["message"].split(".")
    # 提取第一部分(数值描述)和倒数第二部分(大小描述),拼接成新的message
    item["message"] = f"{parts[0]}. {parts[-2]}."

# 输出处理后的结果
import json
print(json.dumps(original_data, indent=2))

方法二:正则表达式法(格式有变化时更灵活)

用正则表达式精准匹配需要保留的内容,适配更多格式变化:

import re
import json

original_data = {
  "json_response": [
    {
      "message": "The value is 1505. xxxxxxx: xxxxxx: This is a big value. xxxxx.",
      "value": "1505"
    },
    {
      "message": "The value is 5. xxxxxxx: xxxxxxx: This is a small value. xxxxx.",
      "value": "5"
    },
    {
      "message": "The value is 500. xxxxxxx: xxxxxxx: This is a medium value. xxxxx.",
      "value": "500"
    }   
  ]
}

# 定义正则模式,捕获两个关键部分
pattern = r"(The value is \d+\.).*(This is a \w+ value\.)"

for item in original_data["json_response"]:
    match_result = re.search(pattern, item["message"])
    if match_result:
        # 拼接捕获到的两个部分作为新的message
        item["message"] = f"{match_result.group(1)} {match_result.group(2)}"

# 输出处理后的结果
print(json.dumps(original_data, indent=2))

内容的提问来源于stack exchange,提问作者asking

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:09:28