2017-12-22 1 views
0

Ich habe verwendet urllib.request.urlopen (‚....‘) und erhielt folgendes Ergebnis:JSON verwenden auf url_address

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' 

ich versucht habe, JSON zu verwenden, um sie zu trennen, wo jedoch Komma ich habe folgende Fehlermeldung:

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

gibt es eine Möglichkeit ich ein Array Ergebnis wie bekommen:

137696 

1664 

48095225 

und so weiter.

Danke

+4

Was meinen Sie, verwendet man JSON? Das Ergebnis, das du zeigst, ist nicht JSON. –

+2

Diese Ausgabe ist meist nur eine CSV-Datei. Sie könnten es wahrscheinlich mit Pythons CSV-Parser analysieren. – larsks

+0

JSON-Fehler in der Spalte ist das erste Komma, weil Ihnen in Ihren Antwortdaten das führende [und das nachgestellte] fehlt. Auch die Zeilenumbrüche benötigen Kommas. –

Antwort

0

das Ergebnis der API ist in JSON (mehr wie CSV) nicht formatiert. so dass, wenn die Daten immer werde wie sein, dass Sie es wie eine Zeichenfolge zu behandeln und analysieren es mit:

//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' 
+0

eine Empfehlung, wie der Buchstabe 'b' aus dem Ergebnis zu entfernen ich bekomme? Es sagt seinen Bytetyp. – Ben