2016-09-09 4 views
0

Ich habe den folgenden Code, wo ich versuche, Werte in eine Excel-Datei schreiben, aber meine Ausgabe fügt einen Buchstaben in jeder einzelnen Spalte, anstatt das ganze Wort, so enter image description hereSchreiben von Werten zu Excel CSV in Python

Ich möchte das ganze Wort in einer Spalte sein. Ich übergebe gerade ein Array mit den Worten [u'Date/Time', u'City', u'State', u'Shape', u'Duration', u'Summary'] in meine writer. Wie kann ich es so machen, dass ich das ganze Wort in einer Spalte bekomme?

import requests 
import csv 
from bs4 import BeautifulSoup 

r = requests.get('http://www.nuforc.org/webreports/ndxlAK.html') 
soup = BeautifulSoup(r.text, 'html.parser') 
csv.register_dialect('excel') 

f = open('ufo.csv', 'wb') 
writer = csv.writer(f) 

headers = soup.find_all('th') 
header_text = [] 
header_count = 1 
for header in headers: 
    if header_count == len(headers): 
     print "value being written: " + str(header_text) 
     writer.writerows(header_text) 
    else: 
     header_text.append(header.text) 
     header_count += 1 

f.close() 
+0

'writer.writerows ([header_text])'? – Gerrat

+0

Das funktioniert, warum macht der [] einen Unterschied? – Rafa

Antwort

2

Sie den Text einer einzigen Spalte über das Extrahieren:

für Header in Header

Für jede einzelne Spalte, sind Sie es aus wie eine Reihe von Schreiben Spalten über:

writer.writerows (header_text)

Die writerows-Methode erwartet eine Liste von zu schreibenden Spalten, sodass sie darüber iteriert wird. Sie haben ihm eine einzelne Zeichenfolge übergeben, so dass er darüber iteriert und ein Zeichen pro Spalte schreibt.

Also entweder:

writer.writerows([header_text]) # turn this single column into a list 
# or 
writer.writerow(header_text) # just write out as a single item 

sollte funktionieren.