在python

时间:2016-09-09 20:37:41

标签: python excel csv

我有以下代码,我正在尝试将值写入excel文件,但我的输出在每个列中添加一个字母,而不是整个单词,就像这样 enter image description here

我希望整个单词都在一列中。我目前正在将一个包含[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()

1 个答案:

答案 0 :(得分: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

应该有用。