代码之家  ›  专栏  ›  技术社区  ›  O.rka

将列表写入.xls文件的最“Python”方式?

  •  1
  • O.rka  · 技术社区  · 12 年前
    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')
    

    我正试图将列表转换为制表符delmited格式,这样我就可以写入.xls文件,但我唯一能想到的方法似乎很单调。我想知道是否有人知道一种更快、更高效、更“蟒蛇式”的方式来将列表写入.xls

    4 回复  |  直到 12 年前
        1
  •  1
  •   Emmett Butler    12 年前

    你可以通过列表理解来完成你想要的格式

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

    请参阅python的文档 join .

        2
  •  1
  •   Peter DeGlopper    12 年前

    使用内置 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)
    
        3
  •  0
  •   Community Mohan Dere    8 年前

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

    Python - Write to Excel Spreadsheet

        4
  •  0
  •   Fred Mitchell    12 年前

    虽然使用制表符分隔的变量或csv通常会起作用,但如果需要UTF-8,则可能会失败。一旦超出ASCII范围,您将看不到您期望的字符。

    我没有尝试过saxman01参考文献中提到的真正的Excel产品,但如果目标真的是Excel,它们可能更合适。他们会处理其他角色集吗?如果你需要去国际(甚至是非英语观众的国内),这只是一个需要思考的问题。

    然后你可能会问自己,谷歌文档会做什么?

    推荐文章