• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    如何用python清洗文件中的数据

    简单版

    直接打开日志文件,往另外一个文件中按照要过滤的要求进行过滤

    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数据清洗工具之Numpy的基本操作
    • python 利用已有Ner模型进行数据清洗合并代码
    • python实现数据清洗(缺失值与异常值处理)
    • python3常用的数据清洗方法(小结)
    • 用Python实现网易云音乐的数据进行数据清洗和可视化分析
    上一篇:Python中glob库实现文件名的匹配
    下一篇:python中%格式表达式实例用法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    如何用python清洗文件中的数据 如,何用,python,清洗,文件,