【python学习秘籍】python实现txt转xls

来源:八维教育发布时间:2017-08-28 16:41阅读(

www.bwie.com

八维网络工程专业讲师袁**前段时间接到以前一个毕业的学员发消息说目前自己有很多txt 文件,领导要转成xls文件,问用python怎么实现,袁老师在后台简单回复了下,其实完成这个需求方法有很多,因为具体的txt格式不清楚,当然如果是有明确分隔符的会更好处理些,可以直接把txt文件转成csv文件,这样可以用excel打开后就是表格的样式了,如果直接要转成xls,那就需要用到python的读写excle文件的模块,具体实现如下:

北京八维教育版权所有

#!/usr/bin/env python

本文来自北京八维教育

import xlwt

北京八维教育版权所有

import xlrd 本文来自北京八维教育

from os import listdir

北京八维教育版权所有

from os.path import isfile, join 本文来自北京八维教育

#用户输入目录

北京八维教育版权所有

mypath = raw_input("Please enter thedirectory path for the input files: ")

www.bwie.com

#获得所有txt 文件 本文来自北京八维教育

textfiles = [ join(mypath,f) for f inlistdir(mypath) if isfile(join(mypath,f)) and '.txt' in f] 本文来自北京八维教育

#判断是否为数字

www.bwie.com

def is_number(s):

北京八维教育版权所有

try:

北京八维教育版权所有

float(s)

www.bwie.com

return True

www.bwie.com

except ValueError:

北京八维教育版权所有

return False

www.bwie.com

#创建格式

北京八维教育版权所有

style = xlwt.XFStyle()

北京八维教育版权所有

#定义数值格式

北京八维教育版权所有

style.num_format_str = '#,###0.00' www.bwie.com

#读取每行数据生成新文件

北京八维教育版权所有

for textfile in textfiles:

本文来自北京八维教育

f= open(textfile, 'r+') 本文来自北京八维教育

row_list = [] 本文来自北京八维教育

for row in f:

北京八维教育版权所有

row_list.append(row.split())

本文来自北京八维教育

column_list = zip(*row_list)

北京八维教育版权所有

workbook = xlwt.Workbook() 本文来自北京八维教育

worksheet = workbook.add_sheet('Sheet1')

北京八维教育版权所有

i= 0

本文来自北京八维教育

for column in column_list:

北京八维教育版权所有

for item in range(len(column)):

本文来自北京八维教育

value = column[item].strip()

北京八维教育版权所有

if is_number(value): www.bwie.com

worksheet.write(item, i, float(value),style=style)

本文来自北京八维教育

else:

北京八维教育版权所有

worksheet.write(item, i, value)

本文来自北京八维教育

i+=1 本文来自北京八维教育

workbook.save(textfile.replace('.txt','.xls'))

北京八维教育版权所有

其中比较有意思的是zip函数的使用,zip(*row_list),具体什么意思呢,还是看下面一个例子吧: www.bwie.com

>>> x = [1, 2, 3]

北京八维教育版权所有

>>> y = [4, 5, 6]

www.bwie.com

>>> z = [7, 8, 9] www.bwie.com

>>> xyz = zip(x, y, z)

北京八维教育版权所有

>>> print xyz 本文来自北京八维教育

[(1, 4, 7), (2, 5, 8), (3, 6, 9)] 本文来自北京八维教育

>>> newxyz = zip(*xyz)

本文来自北京八维教育

>>> print newxyz 本文来自北京八维教育

[(1,2, 3), (4, 5, 6), (7, 8, 9)]

本文来自北京八维教育

看例子还是比较直观的,文档上叫压缩解压缩操作,另外这行worksheet.write(item, i, float(value), style=style),这个函数的参数分别对应的意思是行,列,值和格式,最后建议把脚本拷贝到自己电脑上运行下试试,别的不多说了,这篇到就到这里,希望对大家有用。
  本文来自北京八维教育

(文章内容主体来源于微信公共号:python运维技术,如涉及作品内容、版权和其它问题,请在30日内与本网站负责人联系,我们将在第一时间删除内容!)

北京八维教育版权所有