如何用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用字典统计单词或汉字词个数示例
Apr 22 Python
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
详解Django缓存处理中Vary头部的使用
Jul 24 Python
python实现SMTP邮件发送功能
Jun 16 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
May 30 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
如何学习Python time模块
Jun 03 Python
利用Python实时获取steam特惠游戏数据
Jun 25 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
第十五节--Zend引擎的发展
2006/11/16 PHP
可定制的PHP缩略图生成程式(需要GD库支持)
2007/03/06 PHP
PHP 执行系统外部命令 system() exec() passthru()
2009/08/11 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
在vue中安装使用vux的教程详解
2018/09/16 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
Angular value与ngValue区别详解
2019/11/27 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
详解Python pygame安装过程笔记
2017/06/05 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
python实现双色球随机选号
2020/01/01 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
教师个人剖析材料
2014/02/05 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
预备党员承诺书
2014/03/25 职场文书
信仰纪录片观后感
2015/06/08 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
Python函数中的不定长参数相关知识总结
2021/06/24 Python
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫
MySql数据库 查询时间序列间隔
2022/05/11 MySQL
利用Redis实现点赞功能的示例代码
2022/06/28 Redis