在url_address上使用JSON

问题描述 投票:0回答:1

我使用了urllib.request.urlopen('....')并收到了以下结果:

url_address = urllib.request.urlopen('....')
data = json.loads(url_address.read())

b'137696,1664,48095225\n129907,90,5354763\n150314,85,3316136\n292634,84,3174504\n248365,87,4088707\n365908,79,1849614\n262326,67,550318\n503762,69,705908\n44356,99,13065267\n288934,70,781133\n120130,85,3260661\n355951,64,434948\n215543,66,536087\n203090,70,737697\n41563,82,2479872\n224644,64,436468\n184570,61,302395\n285002,62,361824\n285071,53,147674\n101071,85,3512315\n50733,82,2486026\n171716,52,129734\n334208,47,75129\n146628,61,308045\n179311,6\n145128,11\n51986,175\n-1,-1\n-1,-1\n27919,157\n-1,-1\n135580,1\n-1,-1\n'

我曾尝试使用JSON将逗号分隔,但我收到以下错误:

json.decoder.JSONDecodeError: Extra data: line 1 column 7 (char 6)

有没有办法可以获得类似的数组结果:

137696

1664

48095225

等等。

谢谢

python json url
1个回答
0
投票

API的结果未使用JSON格式化(更像CSV)。因此,如果数据总是那样,你可以像对待字符串一样处理它并用以下方法解析它:

//result1 is an array
//result2 is a string
data = ''
a = b'137696,1664,48095225\n129907,90,5354763\n150314,85,3316136\n292634,84,3174504\n248365,87,4088707\n365908,79,1849614\n262326,67,550318\n503762,69,705908\n44356,99,13065267\n288934,70,781133\n120130,85,3260661\n355951,64,434948\n215543,66,536087\n203090,70,737697\n41563,82,2479872\n224644,64,436468\n184570,61,302395\n285002,62,361824\n285071,53,147674\n101071,85,3512315\n50733,82,2486026\n171716,52,129734\n334208,47,75129\n146628,61,308045\n179311,6\n145128,11\n51986,175\n-1,-1\n-1,-1\n27919,157\n-1,-1\n135580,1\n-1,-1\n'
data += str(a)
data = data[1:]
result1 = data.replace('\n',',').split(',')
result2 = ''
for r in result1:
    result2 += r + '\n'
© www.soinside.com 2019 - 2024. All rights reserved.