我使用BeautifulSoup提取html表并将元素存储在列表中。接下来,我想将列表写入.csv文件,但看起来编写器函数不会将元素写入不同的行。
import csv
from bs4 import BeautifulSoup
# Grab first table (station table in html file)
def parse_station(html):
soup = BeautifulSoup(html)
s_table = soup.find_all('table')[1]
stations = []
for tr in s_table.find_all('tr')[1:]:
td = tr.find_all('td')[1]
td = td.get_text()
stations.append(td)
return stations
stations = parse_station(open('data.html').read())
with open('stations.csv', "wb") as f:
csv_writer = csv.writer(f)
csv_writer.writerow([stations])
f.close()
.csv就像:
A,B,C,D,E
而不是:
A,
B,
C,
D,
E,
我的代码出了什么问题?我该如何解决? (我正在使用Python 2.7)
答案 0 :(得分:2)
您可以使用此示例代码
import csv
with open('test.csv', "wb") as f:
writer = csv.writer(f)
writer.writerow(['A'])
writer.writerow(['B'])
这会给你这样的结果
A
B
你可以传递你的价值
注意:检查工作站的类型,如果这将返回str,那么您的值将是单行,但如果这是循环列表示例代码以将列表写入CSV的列表。
>>> list = [1,2,3,4,5]
>>> with open('test.csv', 'wb') as f:
... writer = csv.writer(f)
... for i in list:
... writer.writerow([i])
...
答案 1 :(得分:0)