如何用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使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
Python算法之栈(stack)的实现
Aug 18 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
Jan 14 Python
对Python 多线程统计所有csv文件的行数方法详解
Feb 12 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 Python
用python画一只可爱的皮卡丘实例
Nov 21 Python
python 实现list或string按指定分段
Dec 25 Python
PyQt5中向单元格添加控件的方法示例
Mar 24 Python
Django DRF APIView源码运行流程详解
Aug 17 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 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修改NetBeans默认字体的大小
2013/07/02 PHP
浅析php工厂模式
2014/11/25 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
2020/07/31 Javascript
Python中处理时间的几种方法小结
2015/04/09 Python
python如何实现excel数据添加到mongodb
2015/07/30 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
Python中Unittest框架的具体使用
2019/08/27 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
python数据库编程 Mysql实现通讯录
2020/03/27 Python
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
介绍一下linux的文件系统
2012/03/20 面试题
财务经理岗位职责
2013/11/09 职场文书
文秘人员工作职责
2014/01/31 职场文书
企业人事任命书
2014/06/05 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
计划生育个人总结
2015/03/02 职场文书
优质服务标语口号
2015/12/26 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers