使⽤python拆分Excel⽂件并输出到txt
使⽤python拆分Excel⽂件并输出到txt
背景需求
输⼊:
输⼊的EXCEL⽂件有六列,对应GPS轨迹的六个属性,每⾏对应⼀条轨迹,每个单元格⾥存的是以分号隔开的⼀条轨迹上该属性的全部值。(有些单元格⾥内容太长,超出EXCEL最⼤限制,数据会变成“ERROR LENGTH”)
输出:
共n个txt⽂件,每个⽂件内容来⾃输⼊的EXCEL的⼀⾏,将每个GPS属性的内容按顺序组合成⼀个GPS信息作为⼀⾏。
代码:
import xlrd
import time
from operator import itemgetter
import os
file='/Users/hxy/CLionProjects/tracks_from_SQL/test_temp.xlsx'
rb = xlrd.open_workbook(filename=file)# 打开⽂件
sheet1 = rb.sheet_by_index(0)# 通过索引获取表格
print(sheet1.name)# 表名
# 读取表中的数据
nrow = ws
ncol = ls  # 到⾏列总数
print("⾏数:", nrow,"列数:", ncol)
# titles = []
# 从表格中选择并复制部分数据写⼊到新的⽂件中
rows =[w_values(row,0,)for row in ws)]# 按⾏读取表中的所有数据
# titles = rows[0]  # 把标题⾏另存到⼀个list中
del rows[0]# 从数据中删掉标题⾏
# print(titles)
num =0
for r in rows:# 遍历每⼀条订单轨迹(每⾏)
if r[0]=='ERROR LENGTH'or r[1]=='ERROR LENGTH'or r[2]=='ERROR LENGTH'or r[3]=='ERROR LENGTH'or r[4]=='ERROR LENGTH'or r[5]==' ERROR LENGTH':
continue
latitude = r[0].split(';')
longitude = r[1].split(';')
speed = r[2].split(';')
direction = r[3].split(';')
accuracy = r[4].split(';')
time_stamp = r[5].split(';')
# print(time_stamp)
lens1 =len(latitude)
lens2 =len(longitude)
lens3 =len(speed)
lens4 =len(direction)
lens5 =len(accuracy)
lens6 =len(time_stamp)
if lens1 + lens2 + lens3 - lens4 - lens5 - lens6 !=0:
print("ERROR LENGTH!!!", lens1, lens2, lens3, lens4, lens5, lens6)
break
file_name_num ="/Users/hxy/CLionProjects/temp/tracks_"+str(num)
file_num =open(file_name_num +"unordered"+".txt",'w')
# 按⾏写⼊
for i in range(lens1):
temp =int(time.mktime(time.strptime(time_stamp[i],"%Y-%m-%d %H:%M:%S"))) # 存⼊⼀条数据
file_num.writelines(str(latitude[i])+",")
file_num.writelines(str(longitude[i])+",")
file_num.writelines(str(speed[i])+",")
file_num.writelines(str(direction[i])+",")
file_num.writelines(str(accuracy[i])+",")
file_num.writelines(str(temp)+"\n")
file_num.close()
#重新排序
input_file =open(file_name_num +"unordered"+".txt")
output_file =open(file_name_num +".txt","w")
table =[]
for line in input_file:
col = line.split(',')# 每⾏分隔为列表,好处理列格式
table.append(col)# 嵌套列表table[[8,8][*,*],...]
table_sorted =sorted(table, key=itemgetter(5))# 按列索引5排序
for row in table_sorted:# 遍历读取排序后的嵌套列表
row =[x for x in row]# 转换为字符串格式,好写⼊⽂本
output_file.write(",".join(row))
input_file.close()
output_file.close()
num = num +1
print("可⽤数据数⽬:", num)writelines在python中的用法

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。