如何用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中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
Python爬豆瓣电影实例
Feb 23 Python
Python OS模块实例详解
Apr 15 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
python SocketServer源码深入解读
Sep 17 Python
使用python模拟高斯分布例子
Dec 09 Python
Python遍历字典方式就实例详解
Dec 28 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
Python实现仿射密码的思路详解
Apr 23 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 Python
Python Serial串口基本操作(收发数据)
Nov 06 Python
python+selenium自动化实战携带cookies模拟登陆微博
Jan 19 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
PHP之COOKIE支持详解
2010/09/20 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
JavaScript 学习笔记(十一)
2010/01/19 Javascript
NodeJS与Mysql的交互示例代码
2013/08/18 NodeJs
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
python实现的防DDoS脚本
2011/02/08 Python
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
社团文化节策划书
2014/02/01 职场文书
高效课堂标语
2014/06/26 职场文书
捐书倡议书
2014/08/29 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
绿色环保倡议书
2015/04/28 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android