大多数'pythonic'方式将列表写入.xls文件?

时间:2013-10-10 20:01:12

标签: python file list xls

the_list = [['a','b','c'],['b','c','d'],['c','d','e']]
output = []
for k in the_list:
    output.append(str(k)[1:-1].replace(',',"\t").replace("'",'').replace(' ',''))

print output
#['a\tb\tc', 'b\tc\td', 'c\td\te']
#for line in output:
    #out_file.write(line + '\n')

我正在尝试将列表设置为制表符格式,以便我可以写入.xls文件,但我能弄清楚如何做的唯一方法似乎非常单调。我想知道是否有人知道更快,更有效,更“pythonic”的方式将列表写入.xls

4 个答案:

答案 0 :(得分:1)

您可以使用列表推导完成您正在寻找的格式

output = ["\t".join(a) for a in the_list]

请参阅join上的python文档。

答案 1 :(得分:1)

使用内置的csv库。 http://docs.python.org/2/library/csv.html

假设out_file已经打开,就像示例中已注释掉的部分一样:

output_writer = csv.writer(out_file, delimiter="\t")
output_writer.writerows(the_list)

有点迂腐,你试图写一个制表符分隔的文件而不是实际的Excel。 Excel可以很好地处理制表符分隔的文件,但如果你需要真正的Excel xlwt是常用的库。使用它你会有这样的东西:

wb = xlwt.Workbook()
ws = wb.add_sheet('sheet_name')
for rownum, sublist in enumerate(the_list):
    for colnum, value in enumerate(sublist):
        ws.write(rownum, colnum, value)
wb.save(out_file)

答案 2 :(得分:0)

如果您必须写信给XLS,我会使用这里给出的答案:

Python - Write to Excel Spreadsheet

答案 3 :(得分:0)

虽然使用制表符分隔变量或csv通常会起作用,但如果需要UTF-8,则会出现故障。一旦你离开ASCII范围,你将看不到你期望的字符。

我没有尝试过saxman01引用中提到的真实Excel产品,但如果目标是Excel,它们可能更合适。他们会处理其他角色吗?如果你需要去国际(或者甚至是国内的非英语听众),你可以考虑一些事情。

然后你可能会问自己,Google Docs会做什么?