您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:如何用python清洗文件中的数据

51自学网 2021-10-30 22:27:33
  python
这篇教程如何用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 codecswith codecs.open('c:/20160907205.log', encoding='utf_8_sig') as f:    for line in f:        print(line)

注意编码格式是utf_8_sig

多文件清洗

对多个文件进行过滤,可以借助其名称的规律,遍历文件之后

import codecswith 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 codecsa=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 reimport openpyxldata = []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清洗文件中的数据的资料请关注51zixue.net其它相关文章!


Python中glob库实现文件名的匹配
python中%格式表达式实例用法
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。