如何用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自定义类并使用的方法
May 07 Python
Python中用于计算对数的log()方法
May 15 Python
PyCharm鼠标右键不显示Run unittest的解决方法
Nov 30 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
Python函数装饰器常见使用方法实例详解
Mar 30 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
使用python求解二次规划的问题
Feb 29 Python
python输出数学符号实例
May 11 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
Aug 07 Python
python如何发送带有附件、正文为HTML的邮件
Feb 27 Python
pyqt5打包成exe可执行文件的方法
May 14 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加密解密示例分享
2014/01/29 PHP
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
Firefox window.close()的使用注意事项
2009/04/11 Javascript
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
vue-router单页面路由
2017/06/17 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
Python中url标签使用知识点总结
2020/01/16 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
口头翻译求职人自荐信
2013/12/07 职场文书
办理退休介绍信
2014/01/09 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
学历公证书范本
2014/04/09 职场文书
企业读书活动总结
2014/06/30 职场文书
学校开学标语
2014/10/06 职场文书
思想作风建设心得体会
2014/10/22 职场文书
商务英语求职信范文
2015/03/19 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
Java如何实现树的同构?
2021/06/22 Java/Android
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang