数据标准化 使用Python脚本处理excel单元格换行符

来源:互联网 发布:淘宝卖家确认订单信息 编辑:程序博客网 时间:2024/04/29 13:32

在下在做数据分析时,原始数据是excel格式的,导入hive表时将其转化为txt格式。
excel文件转txt格式的步骤如下:
1.打开另存为
2.选择txt格式保存
3.打开转成的txt将编码修改为UTF-8

这里写图片描述

这里写图片描述

这里写图片描述

在往hive表中导入数据时常常以换行符‘\n’来分割条数据。然而有时因为数据格式不够标准,即excel单元格中存在着换行符情况。例子如下:

这里写图片描述

在这个表格中,B3,B4单元格都存在这换行符。如果将其导入到hive中,查询得到的结果将是这样:

姓名  与宝宝的关系王宝强 宝宝本人马蓉  "曾经是宝宝的宝宝现在是宝宝的前妻"宋喆  "曾经是宝宝的经纪人现在是宝宝曾经的宝宝的宝宝"

与我们预先想得到的不一样

姓名  与宝宝的关系王宝强 宝宝本人马蓉  曾经是宝宝的宝宝 现在是宝宝的前妻宋喆  曾经是宝宝的经纪人 现在是宝宝曾经的宝宝的宝宝

因此尝试使用python编写脚本来处理问题。开始尝试使用正则表达式进行处理。后面找到了更简便的办法,使用xlrd包对excel文件进行处理。使用pip install xlrd可以安装该包。
下面的代码读取每一个单元格并将其中内容转化为字符串格式(默认为float格式,因此原本的整数可以转化为int去除小数点在转化为字符串),去除字符串中的换行符,将数据直接存储到txt文件中,编码格式为utf-8。

废话不说上代码:

# coding: utf-8# author: turbob00st version:1.0 ''' usage:python version 3  python脚本与excel文件放在同一路径,cmd输入:py -3 excel2txt.py清除excel表格中的单元格换行符,并转化为txt格式文件,可以直接导入hive表'''import xlrd     #导入处理excel文件的包,可以使用pip安装file = input("输入需要处理的文件名(包含.xls,.xlsx):")filename = file.split('xls')[0] + 'txt' #定义输出文件名xls2txt = open(filename,'w',encoding ='utf-8') #创建写入的文件data = xlrd.open_workbook(file) #打开excel表格table = data.sheets()[0]    #读取第一个sheetrows = table.nrows  #excel文件的行数cols = table.ncols  #ecel文件的列数for rownum in range(0,rows):    #读取行    for colnum in range(0,cols):    #读取列        celldata = table.cell(rownum,colnum).value  #读取单元格数据,数据格式为float,下面判断将整数数据转化为int        if type(celldata) == float:            if int(celldata) == celldata:                celldata = int(celldata)        celldata = str(celldata)    #将数据转化为字符串,再对其中的换行符进行处理        celldata = celldata.replace('\n',' ')   #使用python中字符串函数替换换行符为空格        xls2txt.write(celldata +'\t') #单行中的数据用tab分隔符分离    xls2txt.write('\n') #每行之间使用换行符print('清洗完毕')xls2txt.close() #重要,防止内存溢出

总结:该代码可以实现将excel表格标准化并转化为UTF-8的txt文件,方便导入数据库。

0 0
原创粉丝点击