【问题标题】:Python - Get text after string and between bracketsPython - 在字符串之后和括号之间获取文本
【发布时间】:2018-02-07 06:40:32
【问题描述】:

我有一个要解析的输出。它不完全是 JSON,因此无法通过 JSON 解析。这是输出的sn-p

...    
"details": {
        "groups": [
          "group1",
          "group2",
          "group3",
          "group4"
        ]
      },
      "all_Details": [
        "ALL"
      ],
...

我想要做的是在“组”之后和 [] 之间获取输出。所以我想解析出来:

["group1","group2","group3","group4"]

正则表达式不是最好的,所以想看看我将如何解析它。谢谢。

更新:

尝试通过 JSON 解析。这是 JSON 输出:

{
  "details": {
    "groups": [
        "group1",
        "group2",
        "group3",
      ]
  },
  "team": "team1",
  "createdat": "2017-08-11",
  "owningteam": "team2",
}

这是我在 Python 中所拥有的:

parsed_json = json.loads(output)
print(parsed_json['details']['groups])

我收到以下错误:

TypeError:字符串索引必须是整数

【问题讨论】:

  • 请发布您的完整数据结构。有没有规律的结构?可以随意吗?
  • dict['groups'].items()[0] ?
  • 它看起来确实像 JSON,你能给我们看一些非 JSON 吗?
  • 请尝试使用正则表达式。我们不是来为您编写基本代码的。
  • "details"\s*:\s*\{\s*"groups"\s*:\s*(\[[\s\S]*?\])?

标签: python regex parsing


【解决方案1】:

如果你想要groups值括号之间的输出值,比如:

"group1","group2","group3","group4"

你可以这样做:

data = ", ".join( repr(e) for e in groups ), 

这里的groups是json数据的值。

【讨论】:

    【解决方案2】:

    假设您发布的是一个字符串,看起来它可以像这样被评估为一个 python 对象:

    import ast
    d = ast.literal_eval('{"details": { "groups": [ "group1", "group2", "group3", "group4" ] }, "all_Details": [ "ALL" ]}')
    

    然后要得到你想要的,你可以这样做:

    d['details']['groups']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 2017-11-10
      • 2015-10-21
      • 2020-01-26
      • 2016-03-24
      • 2016-08-30
      相关资源
      最近更新 更多