2016-09-09 3 views
0

У меня есть код ниже, где я пытаюсь записать значения в файл excel, но мой вывод добавляет одну букву в каждом отдельном столбце, а не все слово, например enter image description hereЗапись значений в excel csv в python

Я хочу, чтобы все слово было в одной колонке. В настоящее время я передаю массив, в котором есть слова [u'Date/Time', u'City', u'State', u'Shape', u'Duration', u'Summary'] в моем writer. Как я могу сделать это так, чтобы получить все слово в одном столбце?

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

Это работает, почему [] имеет значение? – Rafa

ответ

2

Вы извлекая текст одной колонки через:

для заголовка в заголовках

Для каждого отдельного столбца, вы пишете это как ряд колонки через:

writer.writerows (HEADER_TEXT)

Метод writerows ожидает список столбцов для записи, поэтому он выполняет итерацию по нему. Вы передали ему одну строку, поэтому она повторяется и записывает один символ в столбце.

Так как:

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

должен работать.

Смежные вопросы