gpt4 book ai didi

python - 使用 xlwt 将列表列表写入 excel 文件

转载 作者:太空狗 更新时间:2023-10-30 01:54:25 27 4
gpt4 key购买 nike

我有一个列表列表,例如:

[
[u'email', u'salutation', u'firstname', u'lastname', u'remarks', None, None, None, None, None],
[u'harry@harrypotter.com', u'Mr', u'Daniel', u'Radcliffe', u'expecto patronum', None, None, None, None, None],
[u'snape@harrypotter.com', u'Mr', u'Severus', u'Snape', u'Always', None, None, None, None, None],
]

我想将其插入到 Excel 文件中。可以通过编写每个元素来一个一个地完成。

book = xlwt.Workbook(encoding="utf-8")
sheet1 = book.add_sheet("Sheet 1")

row = 0
for l in listdata:
col = 0
for e in l:
if e:
sheet1.write(row, col, e)
col+=1
row+=1

但是这种方法看起来效率不高,因为整个列表的每个元素都必须遍历。有没有更有效的方法在 python 中使用 xlwt 做同样的事情?

最佳答案

编辑:修复了基准代码中的错误。

您可以稍微缩短一些内容,使它们更具 Python 风格:

for i, l in enumerate(listdata):
for j, col in enumerate(l):
sheet.write(i, j, col)

但据我所知,没有像 csv.reader 那样简单的写入方法。


PS:在您提供的代码中,您从不递增 rowcol,因此您每次都覆盖 (0,0) 处的单元格嵌套 for 循环的迭代。小心!使用 enumerate 将解决这个问题。


基准

事实证明,用逗号连接每一行并写入它比使用 enumerate once 快大约 3 倍。

下面是一些测试代码:

import xlwt
import timeit


def wrapper(fn, *args, **kwargs):
def wrapped():
return fn(*args, **kwargs)
return wrapped

def excel_writer():
xldoc = xlwt.Workbook()
sheet1 = xldoc.add_sheet("Sheet1", cell_overwrite_ok=True)
rows = [[str(y) for y in xrange(100)] for x in xrange(10000)]
fn1 = wrapper(cell_writer, rows, sheet1)
fn2 = wrapper(row_writer, rows, sheet1)
print timeit.timeit(fn1, number=10)/10
print timeit.timeit(fn2, number=10)/10
xldoc.save('myexcel.xls')


def cell_writer(rows, sheet):
for i, row in enumerate(rows):
for j, col in enumerate(row):
sheet.write(i, j, col)

def row_writer(rows, sheet):
rows = [', '.join(row) for row in rows]
for i, strrow in enumerate(rows):
sheet.write(i, 0, strrow)

if __name__ == '__main__':
excel_writer()

number = 1(当然除以 1):

cell_writer: 15.2915050441

row_writer: 0.205128928987

number = 10:

cell_writer: 17.3386430596

row_writer: 0.204951626882

我将大的时间差异归因于 join 的速度比写入 excel 的速度更快。速度方面最大的瓶颈,当然是excel的写法了。

但是,请注意,在 excel 中拆分单元格所花费的时间可能超过使用 row_writer 方法节省的时间。这也可能给最终用户带来不便;锻炼判断力!

关于python - 使用 xlwt 将列表列表写入 excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25307848/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com