我有以下代码,我正在尝试将值写入excel文件,但我的输出在每个列中添加一个字母,而不是整个单词,就像这样
我希望整个单词都在一列中。我目前正在将一个包含[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 :(得分: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
应该有用。