xlsxwriter 的 For 循环迭代问题
For-loop iteration issue with xlsxwriter
我正在尝试使用 xlsxwriter 构建 for 循环以逐行写入我的列表。我的代码块;
driver.get("file:///C:/HTML/new.html")
workbook = xlsxwriter.Workbook("test.xlsx")
worksheet = workbook.add_worksheet("PC list")
header = driver.find_elements_by_xpath("/html/body/table/tbody/tr[1]/th")
headers = []
for h in header:
headers.append(h.text)
worksheet.write_row("A1", headers) # writes 1st row without any issue
trs = driver.find_elements_by_xpath("//table//tr")
for tr in trs[1:]:
row=[td.text for td in tr.find_elements_by_tag_name("td")]
worksheet.write_row("A2", row) # It overwrites each time
workbook.close()
每次都覆盖,所以我只看到最后一个Excel;
但我想看到这样的;
我想“A2”每次都必须递增,但如何递增?
worksheet.write_row("A2", row) # It overwrites each time
xlsxwriter 可以吗?有人可以建议该怎么做吗?非常感谢
您可以更新要写入的行号,如下所示:
for n, tr in enumerate(trs[1:]):
row=[td.text for td in tr.find_elements_by_tag_name("td")]
n_row = 2 + n
worksheet.write_row(f"A{n_row}", row) # It overwrites each time
函数 enumerate
returns 有两个值:一个数字和您正在迭代的值。
我想剩下的就很简单了。
使用包含行和列的 write_row
的替代形式要容易得多。
可以看到here
所以像这样:
for row_num, tr in enumerate(trs[1:]):
row_data=[td.text for td in tr.find_elements_by_tag_name("td")]
worksheet.write_row(row_num, 0, row_data)
您需要将目标行从 A2 更改为 A3,然后再更改为 A4,以此类推,同时迭代并将这些行写入文件...在您的代码中稍微更新您的 for
循环:
for n, tr in enumerate(trs[1:]):
row=[td.text for td in tr.find_elements_by_tag_name("td")]
worksheet.write_row("A{}".format(2+n), row)
我正在尝试使用 xlsxwriter 构建 for 循环以逐行写入我的列表。我的代码块;
driver.get("file:///C:/HTML/new.html")
workbook = xlsxwriter.Workbook("test.xlsx")
worksheet = workbook.add_worksheet("PC list")
header = driver.find_elements_by_xpath("/html/body/table/tbody/tr[1]/th")
headers = []
for h in header:
headers.append(h.text)
worksheet.write_row("A1", headers) # writes 1st row without any issue
trs = driver.find_elements_by_xpath("//table//tr")
for tr in trs[1:]:
row=[td.text for td in tr.find_elements_by_tag_name("td")]
worksheet.write_row("A2", row) # It overwrites each time
workbook.close()
每次都覆盖,所以我只看到最后一个Excel;
但我想看到这样的;
我想“A2”每次都必须递增,但如何递增?
worksheet.write_row("A2", row) # It overwrites each time
xlsxwriter 可以吗?有人可以建议该怎么做吗?非常感谢
您可以更新要写入的行号,如下所示:
for n, tr in enumerate(trs[1:]):
row=[td.text for td in tr.find_elements_by_tag_name("td")]
n_row = 2 + n
worksheet.write_row(f"A{n_row}", row) # It overwrites each time
函数 enumerate
returns 有两个值:一个数字和您正在迭代的值。
我想剩下的就很简单了。
使用包含行和列的 write_row
的替代形式要容易得多。
可以看到here
所以像这样:
for row_num, tr in enumerate(trs[1:]):
row_data=[td.text for td in tr.find_elements_by_tag_name("td")]
worksheet.write_row(row_num, 0, row_data)
您需要将目标行从 A2 更改为 A3,然后再更改为 A4,以此类推,同时迭代并将这些行写入文件...在您的代码中稍微更新您的 for
循环:
for n, tr in enumerate(trs[1:]):
row=[td.text for td in tr.find_elements_by_tag_name("td")]
worksheet.write_row("A{}".format(2+n), row)