首页 > 解决方案 > 如何使用python将垂直管道作为分隔符的JSON数组中的两个不同数据分开

问题描述

下面是我在 2 行不同的示例 json 字符串

{""creditNoteId"":""BSA11130181-S7"",""creditNoteUrl"":""www.twitir.com""}
{""creditNoteId"":""BSA11130181-S8"",""creditNoteUrl"":""www.googol.com""}|{""creditNoteId"":""BSA11130181-S9"",""creditNoteUrl"":""www.fesbuuk.com""}

我对第一行没有问题,但在第二行中,它以垂直管道作为分隔符,它给了我错误

我想像下面这样打印它们

BSA11130181-S7 www.twitir.com
BSA11130181-S8 www.googol.com
BSA11130181-S9 www.fesbuuk.com

目前我有以下错误

raise JSONDecodeError("Extra data", s, end)

使用下面的python代码

        a = credit_note
        y = json.loads(a)
        for x in y:
          print(y["creditNoteId"], y["creditNoteUrl"])

标签: pythonjson

解决方案



import json

d1 = '{"creditNoteId":"BSA11130181-S7","creditNoteUrl":"www.twitir.com"}'
d2 = '{"creditNoteId":"BSA11130181-S8","creditNoteUrl":"www.googol.com"}|{"creditNoteId":"BSA11130181-S9","creditNoteUrl":"www.fesbuuk.com"}'
d2 = d2.replace('|',',') # point 1
d3 = '[{' + d2[1:-1:] + '}]'  # point 2
y = json.loads(d3)
for x in y:
    print(x["creditNoteId"], x["creditNoteUrl"])

此代码将为您工作..

  1. 替换 | 和 ,
  2. 用 [{ 和 ]} 替换第一个和最后一个大括号,使其成为有效的 JSON 对象。
  3. 还要确保 d1 和 d2 是上面代码中发布的字符串,因为 json.loads 需要一个字符串参数。

推荐阅读