如何用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获取CPU和内存信息的思路与实现(linux系统)
Jan 03 Python
python实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
Python对多属性的重复数据去重实例
Apr 18 Python
python 异或加密字符串的实例
Oct 14 Python
对Python3中dict.keys()转换成list类型的方法详解
Feb 03 Python
python内置函数sorted()用法深入分析
Oct 08 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
python实现人性化显示金额数字实例详解
Sep 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
PHP集成FCK的函数代码
2008/09/27 PHP
PHP教程 变量定义
2009/10/23 PHP
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
php封装的smarty类完整实例
2016/10/19 PHP
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
优秀团员个人事迹材料
2014/01/29 职场文书
收款授权委托书
2014/10/02 职场文书
华清池导游词
2015/02/02 职场文书
工会文体活动总结
2015/05/07 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL