Python转非表格格式txt(汉字or数字)为xls

版权声明:本文为博主原创文章,未经博主许可不得转载 https://blog.csdn.net/thither_shore/article/details/52344749

处理数据时有些原始数据(汉字or数字)是txt格式,且没有制表符之类的,仅以逗号分隔,不容易直接复制到excel里。本文用python将这类数据处理后存入xls格式,比如

编号,色泽,根蒂,敲声,纹理,脐部,触感,密度,含糖率,好瓜  
1,青绿,蜷缩,浊响,清晰,凹陷,硬滑,0.697,0.46,  
2,乌黑,蜷缩,,清晰,凹陷,硬滑,,0.376,是  
3,,,,清晰,凹陷,硬滑,0.634,0.264,是 

现在把这几行数据复制保存成"filename.txt",用python读取到excel排成表格格式。如图:


方法如下:

# -*- encoding: utf-8 -*-
#-------------------------------------------------------------------------------
# Purpose:     txt转换成Excel
# Author:      zhoujy
# Modified:    ThitherShore
#-------------------------------------------------------------------------------
import datetime
import time
import os
import sys
import xlwt #需要的模块

def txt2xls(filename,xlsname):   #文本转换成xls的函数
# filename 是将被转换的txt文件名(或加路径), 不用加后缀.txt,写在“”内;
# xlsname  是将要生成的xls文件名(或加路径), 不用加后缀.xls,写在“”内;
# 作为函数调用的举例:txt2xls('D:/Notepad plus plus/filename','D:/Notepad plus plus/xlsname')
# 这种路径写法会报错:txt2xls('D:\Notepad plus plus\filename','D:\Notepad plus plus\xlsname')
    print 'converting xls ... '
    f = open(filename+'.txt')    #打开txt文本进行读取
    x = 0                        #在excel开始写的位置(y)
    y = 0                        #在excel开始写的位置(x)
    xls=xlwt.Workbook()          #下一行是生成excel的方法,声明excel
    sheet = xls.add_sheet('sheet1',cell_overwrite_ok=True) 
    while True:                  #循环,读取文本里面的所有内容
        line = f.readline()      #一行一行读取
        if not line:             #如果没有内容,则退出循环
            break
        for i in line.split(','):#读取出相应的内容写到x
            item=i.strip().decode('utf8')
            sheet.write(x,y,item)
            y += 1               #另起一列
        x += 1                   #另起一行
        y = 0                    #初始成第一列
    f.close()
    xls.save(xlsname+'.xls')     #保存
    print 'finished!'

#if __name__ == "__main__":
#    filename = sys.argv[1]
#    xlsname  = sys.argv[2]
#    txt2xls(filename,xlsname)

if __name__ == "__main__":
    filename = "filename"       # 将被装换的txt名字(或加路径), 不用加文件后缀.txt
    xlsname  = "xlsname"        # 将要生成的xls名字(或加路径), 不用加文件后缀.xls
    txt2xls(filename,xlsname)

【后注】:这里举例是“以逗号分隔的,若原始数据是别的符号分隔,修改代码第28行即可。比如若是从某表格复制过来的带有tab格式的数据,那么将代码中","替换成"\t"即可。这里"\t"是正则表达式"tab"的写法。

【使用】:1)方法一:直接修改代码倒数三行的文件路径成你需要的,运行即可;

     2)方法二:将文件名存成xxx.py然后import xxx,调用函数txt2xls

     3)作为函数调用的举例:txt2xls('D:/Notepad plus plus/filename','D:/Notepad plus plus/xlsname');

     4)这种路径写法会报错:txt2xls('D:\Notepad plus plus\filename','D:\Notepad plus plus\xlsname')。

【感谢】:实现方法参考了这篇博文

猜你喜欢

转载自blog.csdn.net/thither_shore/article/details/52344749