• 用python第三方库xlwt解决数据提取后存到execl


    在做文本处理的时候需要将txt里的部分文件提取到execl中,因为刚开始学python不太熟悉,正则表达式也是初学,是一头雾水,就度娘了一下,别人都提到xlwt是处理excel文本极好的,而且百度知道上的截取字段到execl的程序也用到了xlwt,就度娘到xlwt的下载地址:

    https://pypi.python.org/pypi/xlwt/#downloads

    此地址如果不容易下的话可到百度盘下载:

    http://pan.baidu.com/s/1mg8ED2g    里面是xlwt-1.0.0

    当时搜到百度知道作为参考的程序地址找不到了,贴下他的部分程序:

    #!/usr/bin/python
    import xlwt
    wb = xlwt.Workbook()
    ws = wb.add_sheet('shujue')
    f = open(r'e:shuju.txt')
    x = f.readline()
    y = x.split()
    print (y)
    
    上面是读取一行shuju.txt里面的内容,然后以行里面的空格分割成几个字串,然后组成一个list就是y,然后把y打印出来,有参考了xlwt下载页面的Quick Start:

    import xlwt
    from datetime import datetime
    
    style0 = xlwt.easyxf('font: name Times New Roman, color-index red, bold on',
        num_format_str='#,##0.00')
    style1 = xlwt.easyxf(num_format_str='D-MMM-YY')
    
    wb = xlwt.Workbook()  #?
    ws = wb.add_sheet('A Test Sheet')  #新建一个execl sheet
    
    ws.write(0, 0, 1234.56, style0)  #把1234.56以style0的格式放到excel中的第一行的第一列中
    ws.write(1, 0, datetime.now(), style1)  #把现在的时间以style1的格式放到第二行的第一列中
    ws.write(2, 0, 1)  #把1放到第三行的第一列中
    ws.write(2, 1, 1)  #把1放到第三行的第二列中
    ws.write(2, 2, xlwt.Formula("A3+B3"))  #把第三行的第一列和第二列相加再放到第三行的第三列中
    
    wb.save('example.xls') #保存到examle.xls中

    结合上面再结合python的一些基础知识,如列表元素的遍历方法,for循环以及一些比较就能完成基本的数据截取。


    假设我的shuju.txt的文件中有成对的[]和()将某些数据分割开:如

    hell [] tianya dongci daci
    [] () love me love my dog
    good morning ()[] see hello to () [] every
    aaa () 
    hehe cocos python () [] very good
    ding ling [] () dingling () ling ling
    da da de () [] ma ti 
    我要把把()或[]出现第一次后把后面的数据给截取出来,放到excel中,并要求()和[]起始的要不同编号,程序如下:

    #!/usr/bin/python
    import xlwt
    
    style0 = xlwt.easyxf('font: name Times New Roman, color-index red, bold on')#红色字体,加粗
    
    wb = xlwt.Workbook()
    ws = wb.add_sheet('A Test Sheet', cell_overwrite_ok=True)  #cell...=True是防止重复操作一个单元格报错
    f = open(r'e:shuju.txt')
    loop = 0  #控制写入execl的行
    loop_test = 0 #控制以[]开始的出现的次序
    loop_sub = 0  #控制以()开始出现的次序
    temp_str = ""  #做缓存的字符串,循环添加空格用到
    loop_zk = 0  #控制截取字符串的范围
    for j in range(300):  #txt文件要小于300行
        x = f.readline()  #读取一行数据
        y = x.split()  #以空格分割为若干字符串
        for i in y:
            loop_zk += 1  #记录()或[]出现在列表的哪个位置,便于截取后面的数据
            if ((i == "[]") or (i == "()")) and (len(y) > loop_zk):  #(len(y)>loop_zk)来保证()和[]后面还有数据
                if(i == "[]"):
                    loop_test += 1
                    ws.write(loop, 0, loop_test, style0)
                    for s in y[loop_zk:]:
                        temp_str += (s + " ")
                        ws.write(loop, 1, temp_str, style0)
                elif(i == "()"):
                    loop_sub += 1
                    ws.write(loop, 0, loop_sub)
                    for s in y[loop_zk:]:
                        temp_str += (s + " ")
                        ws.write(loop, 1, temp_str)
              
                loop += 1  #excel写入位置移动一行
                temp_str = ""  #temp_str清空
                break  #找到一个()或[]后就跳出此行的搜索
        loop_zk = 0  #()和[]位置清零
                
    wb.save('e:shuju.xls')  #将数据存到execl中

    运行结果如下:



    ok~~~~



  • 相关阅读:
    ZH奶酪:JavaScript中的JSON.stringify() and JSON.parse()
    ZH奶酪:PHP中添加HTML代码的三种方法
    ZH奶酪:Ionic中(弹出式窗口)的$ionicModal使用方法
    ZH奶酪:JavaScript清空数组的三种方法
    ZH奶酪:AngularJS判断checkbox/复选框是否选中并实时显示
    ZH奶酪:JavaScript调用AngularJS的函数/$scope/变量
    ZH奶酪:PHP如何判断提交表单中多个复选框是否选中?
    ZH奶酪:PHP解析URL及parse_url、parse_str、explode、implode函数说明
    ZH奶酪:Ubuntu14.04 安装Android SDK(SDK tools only)
    ZH奶酪:Word断字功能不可用。请运行Microsoft Office安装程序安装该功能,然后重试。
  • 原文地址:https://www.cnblogs.com/v-BigdoG-v/p/7398641.html
Copyright © 2020-2023  润新知