将python变量写入CSV文件中每一列的新单元格

时间:2019-07-15 16:13:44

标签: python csv

我想将BeautifulSoup与Python一起使用,以从动态网站中抓取数据。一切都可以编译,我可以正确获取标记中的值以输出并写到csv中。但是这里的问题是,不是将值写到列的每一行,而是当我打开csv文件时,我看到我的代码只将值写到一列,但是在我的情况下,我有9列。我不知道如何将变量中的值放到单独的列中?

with open('myreport.csv','wb') as f:
    thewriter = csv.writer(f, delimiter=',', quotechar=' ', quoting=csv.QUOTE_MINIMAL)

    thewriter.writerow(['Toan','Van','Ngoai ngu','Vat li','Hoa hoc','Sinh hoc','Lich su','Dia li','GDCD'])

还有我的代码来获取我需要的所有标签的价值。

for row in rows:    
        content1 = row.find_all('td')[1::2]
        for content2 in content1:
            print(content2.get_text())
            thewriter.writerow([content2.get_text()])

我期望的csv文件结构是:

'Toan','Van','Ngoai ngu','Vat li','Hoa hoc','Sinh hoc','Lich su','Dia li','GDCD'
'8','7','2','5','4','10'

但是当编译完成时,它将返回:

'Toan','Van','Ngoai ngu','Vat li','Hoa hoc','Sinh hoc','Lich su','Dia li','GDCD'
'8'
'7'
'2'
'5'
'4'
'10'

1 个答案:

答案 0 :(得分:0)

问题在这里:

thewriter.writerow([content2.get_text()])

此代码将一个单个值连续写出。您想要的就是所有这些:

content1 = row.find_all('td')[1::2]
all_cells = [c.get_text() for c in content1]
thewriter.writerow(all_cells)