Seite 1 von 1

CSV aus dem Web laden und zerlegen ?

Verfasst: Samstag 2. Dezember 2017, 21:04
von ThomasDD
Hallo,

ich lade eine CSV-Datei die mit einem Texteditor betrachtet prinzipiell etwa so aussieht

1,aaa,bbb
2,ccc,ddd

aus dem Web mit den Befehlen

Code: Alles auswählen

a = requests.get(url)
b = a.content.decode()
Ziel ist: die einzelnen mit ',' getrennten Elemente pro Zeile herausholen.

print(b) zeigt mir dann auch eine Liste einzelner Zeilen wie oben beim Editor angegeben an, die man dann splitten könnte mit ',' als Trennzeichen.

Aber,

Code: Alles auswählen

for c in b:
    print(c)
bringt dann als 'c' jedes einzelne Zeichen aus der csv-Datei, alles senkrecht untereinander.


Wie könnte man das Ziel am besten erreichen ?

Danke,
Thomas

Re: CSV aus dem Web laden und zerlegen ?

Verfasst: Samstag 2. Dezember 2017, 21:20
von noisefloor
Hallo,

in dem du das csv-Modul nimmst, dass Python standardmäßig an Bord hat. Das ist genau dafür gemacht.

Doku: https://docs.python.org/3.5/library/csv.html

Gruß, noisefloor

Re: CSV aus dem Web laden und zerlegen ?

Verfasst: Samstag 2. Dezember 2017, 21:25
von ThomasDD
Danke ja das hatte ich auch schon probiert ev. nur nicht richtig.Das Teil hat dann immer sowas wie ['text'] gebracht.

Mit b.content.decode().split("\n") kommen die Zeilen jetzt erstmal so wie im File wieder raus.

Re: CSV aus dem Web laden und zerlegen ?

Verfasst: Samstag 2. Dezember 2017, 21:36
von noisefloor
Hallo,

die Fehlen dann definitiv die Python-Grundlagen. Du solltest vielleicht nochmal das offizielle Python-Tutorial durchlesen...
Das Teil hat dann immer sowas wie ['text'] gebracht.
Das ist ja auch richtig so. Das csv-Modul liest die Datei standardmäßig ein (wenn du `csv.reader(...) ` benutzt und liefert dir eine Liste von Listen zurück. Über die Liste kannst du dann iterieren, jeder Iterationsschritt liefert dir eine Zeile der Datei als Liste zurück. Auf die kannst du per Index-Zugriff zugreifen.

Das ist absoluter Python-Standard, das kommt sehr sehr sehr oft vor.

Gruß, noisefloor

Re: CSV aus dem Web laden und zerlegen ?

Verfasst: Samstag 2. Dezember 2017, 21:40
von pixewakb
Du könntest Dir auch mal diesen Code-Schnipsel ansehen:

Code: Alles auswählen

import pandas as pd

url="https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"
c=pd.read_csv(url)

Re: CSV aus dem Web laden und zerlegen ?

Verfasst: Samstag 2. Dezember 2017, 21:49
von noisefloor
Hallo,

@pixewak: aus welchem Grund sollte man denn hier Pandas einsetzen? Basierend auf dem Ausgangspost hat das null Vorteil - bzw. für den TE eher noch den Nachteil, dass er sich noch zusätzlich mit Pandas und den Zugriff auf DataFrames in Pandas auseinander setzen muss.

Gruß, noisefloor

Re: CSV aus dem Web laden und zerlegen ?

Verfasst: Samstag 2. Dezember 2017, 22:07
von ThomasDD
Danke ja wird schon alles werden, aller Anfang ist schwer,Ich hab das dicke Python3-Buch https://www.amazon.de/dp/3836258641/ref ... iAbCM4TSZR das zieh ich mir nach und nach rein :)


So gehts jetzt erstmal prima und genau wie es soll

Code: Alles auswählen

b=a.content.decode().split("\n")
for c in b:
    d = c.split(",")

Re: CSV aus dem Web laden und zerlegen ?

Verfasst: Sonntag 3. Dezember 2017, 10:35
von noisefloor
Hallo,

das kann man so machen, wobei du da "nur" das nachbaust, was das csv-Modul besser kann. Besser im Sinne von, dass das csv-Modul alle möglichen Strukturen einer CSV-Datei berücksichtige (z.B. Quoting, Escaping etc.) - was du nicht tust.

In dem "dicken Buch" ist das csv-Modul aber auch beschrieben, AFAIK.

Gruß, noisefloor