在url地址上使用JSON

2024-10-03 02:43:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用了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

等等

谢谢


Tags: jsonurlreaddataaddressrequesturlliburlopen
1条回答
网友
1楼 · 发布于 2024-10-03 02:43:40

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'

相关问题 更多 >