如何用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 元类使用说明
Dec 18 Python
Python中使用copy模块实现列表(list)拷贝
Apr 14 Python
Python守护进程和脚本单例运行详解
Jan 06 Python
浅谈python中的__init__、__new__和__call__方法
Jul 18 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
Python中的引用和拷贝实例解析
Nov 14 Python
opencv python Canny边缘提取实现过程解析
Feb 03 Python
python实现读取类别频数数据画水平条形图案例
Apr 24 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
May 12 Python
手把手教你使用TensorFlow2实现RNN
Jul 15 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
杏林同学录(二)
2006/10/09 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
php生成随机颜色的方法
2014/11/13 PHP
php cli配置文件问题分析
2015/10/15 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
关于javaScript注册click事件传递参数的不成功问题
2014/07/18 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
js模拟F11页面全屏显示
2019/09/17 Javascript
Python读写unicode文件的方法
2015/07/10 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
python求最大值最小值方法总结
2019/06/25 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
综合实践教学反思
2014/01/31 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
原告代理词范文
2015/05/25 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
vue+element ui实现锚点定位
2021/06/29 Vue.js
netty 实现tomcat的示例代码
2022/06/05 Servers