如何用python清洗文件中的数据


Posted in Python onJune 18, 2021

简单版

直接打开日志文件,往另外一个文件中按照要过滤的要求进行过滤

import io;
with open('a.txt', 'w') as f:    
    for line in open('c:/201509.txt'):    
        if line.find('更改项目')>0 and line.find('500')>0:  
            f.write(line+"\n");
print("输出完成");

注意.find返回的是字符串在目标的第几位,要和0作比较 另外使用and而不是&&作为"和",使用or而不是||作为"或" w是写,r是读,a是追加

 

使用filter

import io;
def isData(s):
    return s.find('更改项目')>0 and s.find('500')>0;
with open('a.txt', 'w') as f:             
       list1=list(filter(isData,open('c:/201509.txt')));    
       for (offset,item) in enumerate(list1):
            f.write(str(offset)+":"+item);

 

读取utf-8带bom的文件

微软会在在 UTF-8 文件中放置 BOM头(顺便提一下:把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯。不含BOM的UTF-8才是标准形式,UTF-8不需要BOM,带BOM的UTF-8文件的开头会有U+FEFF,所以Windows新建的空文件会有3字节的大小。

import codecs
with codecs.open('c:/20160907205.log', encoding='utf_8_sig') as f:
    for line in f:
        print(line)

注意编码格式是utf_8_sig

 

多文件清洗

对多个文件进行过滤,可以借助其名称的规律,遍历文件之后

import codecs
with codecs.open('a.txt','a', encoding='utf_8_sig') as f:
    for i in range(205,210):
        f.write(str(i)+"\r\n");   
        print(str(i)); 
        for line in open('c:/20160907'+str(i)+'.log', encoding='utf_8_sig'): 
            if line.find('url为')>=0 :  
                print(line);
                f.write(line+"\r\n");
print("输出完成");

 

清洗数据同时记录订单号并排序

import codecs
a=0;
List=[];
with codecs.open('a.txt','a', encoding='utf_8_sig') as f:    
    for i in range(205,210): 
        for line in open('c:/20160907'+str(i)+'.log', encoding='utf_8_sig'): 
            if line.find('url为')>=0 :  
                ind=line.find("XFLucky");                
                if ind>=0:
                    nums=line[ind:ind+22];                    
                    print(nums);
                    List.append(nums);                   
                a=a+1;
                print(line);
                f.write(str(i)+line+"\r\n");              
List.sort(); 
for item in List:
    print(item);          
print("输出完成"+str(a));

 

清洗sql文件,将数据表名放入excel中

安装openpyxl

pip install openpyxl

安装之后就可以进行sql建表语句的过滤了,将所有的表名和注释写入我们的excel文件中。

import re
import openpyxl

data = []
temp = []
wb = openpyxl.load_workbook('data.xlsx')
ws2 = wb.create_sheet(index=2, title='addSheet_test')
for line in open('wlzcool.sql', encoding='utf-8'):
    if line.find('CREATE TABLE') >= 0:
        matchObj1 = re.search('`(.*?)`', line, re.M | re.I)
        if matchObj1:
            # print("matchObj.group(1) : ", matchObj1.group(1))
            print(matchObj1.group(1))
            temp.append(matchObj1.group(1))
    if line.find('ROW_FORMAT = Dynamic') >= 0:
        matchObj2 = re.search('\'(.*?)\'', line, re.M | re.I)
        if matchObj2:
            # print("matchObj.group(1) : ", matchObj2.group(1))
            print(matchObj2.group(1))
            temp.append(matchObj2.group(1))
        else:
            print("no comment")
            temp.append("no comment")
        data.append(temp)
        temp = []
for row in data:
    ws2.append(row)
wb.save('data.xlsx')
print("输出完成")

 

总结

人生苦短,我用 Python,在强大的第三方库帮助下,我们只需很少的代码就可以实现很大数据量的文件的清洗。

以上就是如何用python清洗文件中的数据的详细内容,更多关于python清洗文件中的数据的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现的桶排序算法示例
Nov 29 Python
Python3学习urllib的使用方法示例
Nov 29 Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 Python
Python中的函数作用域
May 07 Python
python操作mysql代码总结
Jun 01 Python
用Python shell简化开发
Aug 08 Python
python遍历小写英文字母的方法
Jan 02 Python
Python中使用__new__实现单例模式并解析
Jun 25 Python
让你的Python代码实现类型提示功能
Nov 19 Python
postman和python mock测试过程图解
Feb 22 Python
Django+Nginx+uWSGI 定时任务的实现方法
Jan 22 Python
Python使用BeautifulSoup4修改网页内容
May 20 Python
Python中glob库实现文件名的匹配
python中的装饰器该如何使用
Jun 18 #Python
Python预测分词的实现
学会Python数据可视化必须尝试这7个库
python tqdm用法及实例详解
Jun 16 #Python
python使用pymysql模块操作MySQL
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 #Python
You might like
PHP输出日历表代码实例
2015/03/27 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
关于php中一些字符串总结
2016/05/05 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
JavaScript实现大数的运算
2014/11/24 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
2017/02/18 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
vue中v-for加载本地静态图片方法
2018/03/03 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python 可爱的大小写
2008/09/06 Python
Python通过解析网页实现看报程序的方法
2014/08/04 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
python中partial()基础用法说明
2018/12/30 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
Pytorch的mean和std调查实例
2020/01/02 Python
使用Tkinter制作信息提示框
2020/02/18 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
python接入支付宝的实例操作
2020/07/20 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
优秀幼教自荐信
2014/02/03 职场文书
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript