如何用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中的fileinput模块的简单实用示例
Jul 09 Python
Python简单实现Base64编码和解码的方法
Apr 29 Python
Python排序算法实例代码
Aug 10 Python
对python中的高效迭代器函数详解
Oct 18 Python
实例讲解Python中整数的最大值输出
Mar 17 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
Dec 13 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
Python itertools.product方法代码实例
Mar 27 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 Python
学会python自动收发邮件 代替你问候女友
May 20 Python
浅谈Python中文件夹和python package包的区别
Jun 01 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 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开发模式(简写版)
2007/03/15 PHP
ThinkPHP中I(),U(),$this->post()等函数用法
2014/11/22 PHP
js 页面元素的几个用法总结
2013/11/18 Javascript
innerText 使用示例
2014/01/23 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python中的jquery PyQuery库使用小结
2014/05/13 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
详解Python中find()方法的使用
2015/05/18 Python
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
Python 给某个文件名添加时间戳的方法
2018/10/16 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
廉洁自律承诺书
2014/03/27 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
大学迎新生标语
2014/10/06 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python