版权声明:本文为博主原创文章,未经博主许可不得转载 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')。
【感谢】:实现方法参考了这篇博文。