如何用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基于回溯法子集树模板解决m着色问题示例
Sep 07 Python
python实现二叉树的遍历
Dec 11 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
对python中dict和json的区别详解
Dec 18 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
Jan 15 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
python 读取修改pcap包的例子
Jul 23 Python
六种酷炫Python运行进度条效果的实现代码
Jul 17 Python
Python 如何在字符串中插入变量
Aug 01 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 Python
pd.DataFrame中的几种索引变换的实现
Jun 16 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 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写出自己的BLOG系统 2
2010/04/12 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
for循环连续求和、九九乘法表代码
2012/02/20 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
window.print打印指定div实例代码
2013/12/13 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
原生js实现图片层叠轮播切换效果
2016/02/02 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
JS实现的简单分页功能示例
2018/08/23 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
python3 爬取图片的实例代码
2018/11/06 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
美国宠物商店:Wag.com
2016/10/25 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
初中班主任寄语
2014/04/04 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
幽灵公主观后感
2015/06/09 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
Vue3中的Refs和Ref详情
2021/11/11 Vue.js
MySQL的索引你了解吗
2022/03/13 MySQL