如何用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 相关文章推荐
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
Python函数的周期性执行实现方法
Aug 13 Python
基于Python socket的端口扫描程序实例代码
Feb 09 Python
Python SVM(支持向量机)实现方法完整示例
Jun 19 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
python 正则表达式参数替换实例详解
Jan 17 Python
Python开发之pip安装及使用方法详解
Feb 21 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
Apr 26 Python
python3 sleep 延时秒 毫秒实例
May 04 Python
tensorflow使用CNN分析mnist手写体数字数据集
Jun 17 Python
如何利用python生成MD5并去重
Dec 07 Python
python实现图像随机裁剪的示例代码
Dec 10 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项目的方法
2006/10/09 PHP
php采集时被封ip的解决方法
2010/08/29 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
你应该知道PHP浮点数知识
2015/05/13 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
javascript 表单验证常见正则
2009/09/28 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
详解Vue源码中一些util函数
2019/04/24 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
Python封装shell命令实例分析
2015/05/05 Python
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
详解python数据结构和算法
2019/04/18 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
生物学专业求职信
2014/07/23 职场文书
开服装店计划书
2014/08/15 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书