使用writerow函数导出列表时仅输出最后一条数据的问题
问题原因与修复方案
问题根源:缩进错误
你的代码中,print(name,mst)和writer.writerow(...)这两行没有缩进在for循环的代码块内。
Python靠缩进区分代码块归属:你的for循环只是不断覆盖name和mst的变量值,但并没有在每次遍历企业时执行打印和写入操作。等循环跑完,name和mst只保留最后一家企业的信息,此时才执行一次打印和写入,自然只会导出最后一条数据。
修正后的代码
将打印和写入代码缩进,放入for循环内部即可:
import csv with open('names.csv', 'w', newline='', encoding="utf-8") as file: header = ['Name', 'Tax code'] writer = csv.DictWriter(file, delimiter=',', lineterminator='\n', fieldnames=header) writer.writeheader() for firm in firms: name = firm.find('h3', class_='company-name').text mst = firm.find('p', class_=False).get_text(strip=True).split('-')[0].split(':')[1] print(name, mst) writer.writerow({header[0]: name, header[1]: mst})
额外提示
- 确认代码开头已经导入
csv模块(如果之前遗漏的话) - 修正缩进后,每遍历一家企业就会立即执行打印和写入,所有19条数据都会被写入CSV文件
内容的提问来源于stack exchange,提问作者Tann
相关产品推荐
相关产品推荐

