2 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
的參數(shù)writer.writerows()應(yīng)該是一個(gè)二維列表,但rows_data只有一行。
您可以將所有行收集到列表列表中。然后在循環(huán)完成后,調(diào)用writerows()所有內(nèi)容。
all_rows = []
for tr in table_rows:
td = tr.find_all('td')
rows_data = [tabdata.text.strip().replace("\t", "").replace("\n", "") for tabdata in td]
all_rows.append(rows_data)
with open('bahncardkreditkarten-umsatz.csv', 'w', newline='') as filechen:
writer = csv.writer(filechen)
writer.writerows(all_rows)

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
您每次通過循環(huán)都會(huì)覆蓋您的行。假設(shè)您正在讀取的表中的最后一行是空的,因此文件最終為空
在這個(gè)部分:
for tr in table_rows:
td = tr.find_all('td')
rows_data = [tabdata.text.strip().replace("\t", "").replace("\n", "") for tabdata in td]
# print(rows_data)
with open('bahncardkreditkarten-umsatz.csv', 'w', newline='') as filechen:
writer = csv.writer(filechen)
writer.writerows(rows_data)
您將循環(huán)遍歷每個(gè)表行,對(duì)于每一行,您重新打開 .csv 文件并從頭開始寫入。相反,您應(yīng)該打開文件一次,然后在打開文件后循環(huán)遍歷表行,每次通過循環(huán)添加新數(shù)據(jù),或者將行收集到一個(gè)數(shù)組中,然后通過一次調(diào)用 writerows 將它們寫出。
或者,您可以使用打開文件'a'而不是'w'附加到文件;然而,這似乎不必要地低效和混亂。
添加回答
舉報(bào)