Also ich versuche, JSON-Dateien in eine Tab-getrennte Datei zu analysieren. Das Parsen scheint gut zu funktionieren und alle Daten kommen durch. Obwohl das Seltsamste in der Ausgabedatei passiert. Ich habe ihm gesagt, dass er ein Tabulator-Trennzeichen verwenden soll und bei der Ausgabe werden Tabs verwendet, aber es scheint immer noch die einfachen Anführungszeichen zu enthalten. Und aus irgendeinem Grund scheint es auch, den Buchstaben B an den Anfang zu setzen. Ich habe den Header manuell eingegeben, und das funktioniert gut, aber die Daten selbst verhalten sich seltsam. Hier ist ein Beispiel für die Ausgabe, die ich bekomme.Der Python-CSV-Writer fügt Buchstaben an den Anfang jedes Elements und Probleme mit codieren
id created text screen name name latitude longitude place name place type
b'1234567890' b'Thu Mar 14 19:39:07 +0000 2013' "b""I'm at Bank Of America (Wayne, MI) http://t.co/asdf""" b'userid' b'username' 42.28286837 -83.38487864 b'Bank Of America, Wayne' b'poi'
b'1234567891' b'Thu Mar 14 19:39:16 +0000 2013' b'here is a sample tweet \xf0\x9f\x8f\x80 #notingoodhands' b'userid2' b'username2'
Hier ist der Code, den ich verwende, um die Daten zu schreiben.
out = open(filename, 'w')
out.write('id\tcreated\ttext\tscreen name\tname\tlatitude\tlongitude\tplace name\tplace type')
out.write('\n')
rows = zip(ids, times, texts, screen_names, names, lats, lons, place_names, place_types)
from csv import writer
csv = writer(out, dialect='excel', delimiter = '\t')
for row in rows:
values = [(value.encode('utf-8') if hasattr(value, 'encode') else value) for value in row]
csv.writerow(values)
out.close()
Also hier ist die Sache. Wenn ich dies ohne das utf-8-Bit mache und es einfach gerade ausgäbe, wäre die Formatierung perfekt, wie ich es möchte. Aber wenn Leute Sonderzeichen eingeben, stürzt das Programm ab und kann es nicht verarbeiten.
Traceback (most recent call last):
File "tweets.py", line 34, in <module>
csv.writerow(values)
File "C:\Python33\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\U0001f3c0' in position 153: character maps to <undefined>
Hinzufügen der utf-8-Bit-es auf die Art der Ausgabe wandelt die Sie hier sehen, aber dann fügt sie alle diese Zeichen auf den Ausgang. Hat jemand darüber irgendwelche Gedanken?
Das hat den Trick gemacht. Vielen Dank! – brian