Python,将打印输出附加到Excel文件中

1 投票
1 回答
8887 浏览
提问于 2025-04-18 05:41

我希望有人能给我指个方向,或者举个例子,告诉我怎么把下面这个脚本的输出放到Excel表格里,使用xlwt这个库。我的脚本在屏幕上按要求打印出以下文本,但我想把这个输出放到Excel里,分成两列:时间和数值。以下是打印的输出……

07:16:33.354    1

07:16:33.359    1

07:16:33.364    1

07:16:33.368    1

到目前为止,我的脚本如下。

import re

f = open("C:\Results\16.txt", "r")
searchlines = f.readlines()
searchstrings = ['Indicator']
timestampline = None
timestamp = None
f.close()
a = 0
tot = 0

while a<len(searchstrings):
    for i, line in enumerate(searchlines):
        for word in searchstrings:
            if word in line:
                timestampline = searchlines[i-33]
                for l in searchlines[i:i+1]: #print timestampline,l,
                #print
                    for i in line:
                        str = timestampline
                        match = re.search(r'\d{2}:\d{2}:\d{2}.\d{3}', str)
                        if match:
                            value = line.split()
                            print '\t',match.group(),'\t',value[5],
                            print
                            print
                            tot = tot+1
                            break

    print 'total count for', '"',searchstrings[a],'"', 'is', tot
    tot = 0
    a = a+1

我尝试过几次使用xlwt或CSV写入器,但每次都碰壁,只好又回到我之前的脚本,重新尝试。我希望能把match.group()和value[5]打印到Excel工作表的两列中。

谢谢你的时间……

MikG

1 个回答

4

你在使用xlwt的时候遇到了什么问题呢?我个人觉得它非常好用,只要记住基本的操作流程就行:

  1. import xlwt

  2. 用下面的方式创建你的电子表格:

    my_xls=xlwt.Workbook(encoding=your_char_encoding)

    这会返回一个电子表格的句柄,你可以用它来添加工作表和保存整个文件。

  3. 用下面的方式给创建的电子表格添加一个工作表:

    my_sheet=my_xls.add_sheet("sheet name")

  4. 现在你有了工作表对象,可以用下面的方式在单元格中写入内容:

    my_sheet.write(row,column,value)

    my_sheet.write(0,0,"第一列标题") my_sheet.write(0,1,"第二列标题")

  5. 用下面的方式保存整个电子表格:

    my_xls.save('file_name.xls')

    my_xls.save("results.txt")

这是一个最简单的工作示例;当然,你的代码应该在循环中使用sheet.write(row,column,value)来打印数据,比如:

import re
import xlwt

f = open("C:\Results\VAMOS_RxQual_Build_Update_Fri_04-11.08-16.txt", "r")    
searchlines = f.readlines()
searchstrings = ['TSC Set 2 Indicator']
timestampline = None
timestamp = None
f.close()
a = 0
tot = 0

my_xls=xlwt.Workbook(encoding="utf-8") # begin your whole mighty xls thing
my_sheet=my_xls.add_sheet("Results")   # add a sheet to it

row_num=0 # let it be current row number
my_sheet.write(row_num,0,"match.group()") # here go column headers, 
my_sheet.write(row_num,1,"value[5]")      # change it to your needs
row_num+=1 # let's change to next row

while a<len(searchstrings):
    for i, line in enumerate(searchlines):
        for word in searchstrings:
            if word in line:
                timestampline = searchlines[i-33]
                for l in searchlines[i:i+1]: #print timestampline,l,
                #print
                    for i in line:
                        str = timestampline
                        match = re.search(r'\d{2}:\d{2}:\d{2}.\d{3}', str)
                        if match:
                            value = line.split()
                            print '\t',match.group(),'\t',value[5],
                            # here goes cell writing:
                            my_sheet.write(row_num,0,match.group()) 
                            my_sheet.write(row_num,1,value[5])
                            row_num+=1
                            # and that's it...
                            print
                            print
                            tot = tot+1
                            break

    print 'total count for', '"',searchstrings[a],'"', 'is', tot
    tot = 0
    a = a+1
    # don't forget to save your file!
    my_xls.save("results.xls")

需要注意的地方:

  • 把日期/时间数据写入xls对我来说简直是个噩梦,因为Excel内部并不存储日期/时间数据(我也搞不清楚怎么回事),
  • 写入单元格的数据类型要小心。刚开始做简单报告时,把所有数据作为字符串传入就可以了,之后你会发现xlwt的文档非常有用。

祝你使用xlwt愉快!

撰写回答