2016-07-17 10 views
0

Mein Code ist eindeutig durcheinander, aber mehrere Versuche haben mich nirgendwohin geführt. Ich habe einen benutzerdefinierten Dialekt als solche ...CSV Writer Problem in Python

def wereofftoseesv(start_id, end_id): 
    with open('nba_2015_16_pbp.csv', "w") as f: 
     csv.register_dialect('scraper', delimiter="[", lineterminator = '', escapechar='', quoting=csv.QUOTE_MINIMAL) 
     writer = csv.writer(f, dialect='scraper') 
     writer.writerows(["gameid", "time_remaining", "entry", "score", "team", "line", "attendance + capacity", "refs"]) 
     writer.writerows(list_cleaner(start_id, end_id)) 

Ich dachte, was damit gemeint ist, dass jedes Mal, wenn die CSV-Schriftsteller ein „[“ in meinem Code gesehen haben, ist die Ausgabe senden würde, die in eine neue Zelle folgt.

Der letzte Code, den ich in der CSV als solche sieht senden wollen ...

[[400827889], [([48, 0], 'Timofey Mozgov vs. Pau Gasol (Derrick Rose gains possession)', '0 - 0', 'CHI')], ['CHI -1.5'], ['Attendance: 21,957', 'Capacity: 20,917'], ['Mark Ayotte, Scott Foster, Ben Taylor'], [400827889], [([47, 34], 

Und ich würde eine neue Zeile wie mit all den kleineren Listen und Strings jedes Mal geteilt sehen Sie die lange Reihe "400827889".

Zu aktuellen, meine Variablennamen (Linie 5) zeigt sich wie folgt:

g[a[m[e[i[d]  t[i[m[e[_[r[e[m[a[i[n[i[n[g] e[n[t[r[y] s[c[o[r[e] t[e[a[m] l[i[n[e] a[t[t[e[n[d[a[n[c[e[" "[+[" "[c[a[p[a[c[i[t[y] r[e[f[s] 

Und meine CSV-Ausgängen, mit „//“ von mir einen nachträglichen Zusatz „neu Zelle darstellen ", sind wie folgt:

"[400827888]"["[([48 // 0] // 'Andre Drummond vs. Al Horford (Ersan Ilyasova gains possession)'// '0 - 0' // 'ATL')]"["['ATL -6.5']"["['Attendance: 19 // 187' // 'Capacity: 18 // 729']"["['Eli Roe // Zach Zarba // Michael Smith']"["[400827888]"["[([47..." 

Danke für jede Hilfe!

+0

Sie werden feststellen, dass für die Ausgabe die erste Liste der Listen "[[400827889] ..." niemals aufgelöst wird. Das liegt daran, dass jede dieser äußeren Listen ein Spiel darstellt. Ich hoffe, alle Spiele in einer einzigen CSV-Ausgabe zu haben, wobei jede Zeile in jedem Spiel eine einzelne Zeile ist. – BSHuniversity

Antwort

1

Also, per pythons documentation on csv here, ist das Trennzeichen ein einzelnes Zeichen, das Datenfelder trennt. Das erste, was Sie tun möchten, ist, delimiter="[", zu delimiter=",", zu ändern. Dann ändern Sie writer.writerows in Zeile 5 zu write.writerow.

Sie sollten auch lineterminator = '' etwas anderes als eine leere Zeichenfolge sein.

Um ganz ehrlich zu sein, ich bin mir nicht sicher, ob ein CSV die beste Option für den Umgang mit Ihren Daten ist. So wie es aussieht, haben Sie eine Menge von sich wiederholenden Daten - Sie brauchen keine Zeile, Refs, Anwesenheit usw. für jede Datenzeile.

+0

Das ist eine Möglichkeit - einfach die sich nicht wiederholenden Daten in einer CSV und die anderen ergänzenden sich wiederholenden Daten an anderer Stelle zu reproduzieren. Irgendwelche Vorschläge für andere Optionen außer CSV? Vielen Dank für Ihre Hilfe. – BSHuniversity

+0

Dies ist vielleicht zu viel, aber Sie könnten eine relationale Datenbank verwenden. Python hat eine ziemlich gute [sqlite api.] (Https://docs.python.org/2/library/sqlite3.html) – cssko