Ich frage mich, ob jemand mit einem besseren Verständnis von Python und Gae kann mir dabei helfen. Ich lade eine CSV-Datei von einem Formular in den gae-Datenspeicher hoch.Hochladen und Parsen CSV-Datei mit Google App-Engine
class CSVImport(webapp.RequestHandler):
def post(self):
csv_file = self.request.get('csv_import')
fileReader = csv.reader(csv_file)
for row in fileReader:
self.response.out.write(row)
ich in das gleiche Problem laufen, dass jemand anderes hier erwähnt - http://groups.google.com/group/google-appengine/browse_thread/thread/bb2d0b1a80ca7ac2/861c8241308b9717
Das heißt, die csv.reader über jedes Zeichen iteriert und nicht die Linie. Ein Google-Techniker hat diese Erklärung verlassen:
Der Aufruf self.request.get ('csv') gibt einen String zurück. Wenn Sie über eine Zeichenfolge iterieren, durchlaufen Sie die Zeichen, nicht die Zeilen. Sie können die Unterschied hier:
class ProcessUpload(webapp.RequestHandler):
def post(self):
self.response.out.write(self.request.get('csv'))
file = open(os.path.join(os.path.dirname(__file__), 'sample.csv'))
self.response.out.write(file)
# Iterating over a file
fileReader = csv.reader(file)
for row in fileReader:
self.response.out.write(row)
# Iterating over a string
fileReader = csv.reader(self.request.get('csv'))
for row in fileReader:
self.response.out.write(row)
ich wirklich nicht folgen die Erklärung, und war nicht erfolgreich es umzusetzen. Kann jemand eine klarere Erklärung dafür und eine vorgeschlagene Lösung liefern?
Danke, August
Danke für die Erklärung, es macht mir jetzt viel mehr Sinn. –
Ich würde die Verwendung von .splitlines() anstelle von .split ('\ n') in Betracht ziehen –