如何用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学习入门之区块链详解
Jul 25 Python
Python编程实现的图片识别功能示例
Aug 03 Python
python使用json序列化datetime类型实例解析
Feb 11 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
Python实现识别图片内容的方法分析
Jul 11 Python
python实现定时压缩指定文件夹发送邮件
Dec 22 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
详解Python 中的容器 collections
Aug 17 Python
python基本算法之实现归并排序(Merge sort)
Sep 01 Python
浅析Python 字符编码与文件处理
Sep 24 Python
用python写PDF转换器的实现
Oct 29 Python
python实现excel公式格式化的示例代码
Dec 23 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字符串截取问题
2006/11/28 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
深入理解Python对Json的解析
2017/02/14 Python
Python实现数据库并行读取和写入实例
2017/06/09 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
python实现中文文本分句的例子
2019/07/15 Python
python实现超市商品销售管理系统
2019/10/25 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
python matlab库简单用法讲解
2020/12/31 Python
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
会议主持词
2014/03/17 职场文书
教师个人事迹材料
2014/12/17 职场文书
期中考试复习计划
2015/01/19 职场文书
武当山导游词
2015/02/03 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python
golang判断key是否在map中的代码
2021/04/24 Golang
Golang实现AES对称加密的过程详解
2021/05/20 Golang
详解MySQL中的主键与事务
2021/05/27 MySQL