如何用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实现通过shelve修改对象实例
Sep 26 Python
跟老齐学Python之Import 模块
Oct 13 Python
python计算时间差的方法
May 20 Python
Pycharm学习教程(3) 代码运行调试
May 03 Python
python字符串查找函数的用法详解
Jul 08 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
python梯度下降算法的实现
Feb 24 Python
django在开发中取消外键约束的实现
May 20 Python
python 简单的调用有道翻译
Nov 25 Python
python 提取html文本的方法
May 20 Python
PyTorch 如何自动计算梯度
May 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 动态执行带有参数的类方法
2009/04/10 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
js parseInt("08")未指定进位制问题
2010/06/19 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
实现vuex原理的示例
2020/10/21 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
高中毕业自我鉴定范文
2013/10/02 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
预备党员综合考察材料
2014/05/31 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书