吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5228|回复: 10
收起左侧

[Python 转载] 央·python编程之QQ数据清洗

  [复制链接]
程语欣 发表于 2018-1-30 17:58
一般我们从网上下下来的数据都很杂乱的,什么样的情况都有,不利于我们整理,所以在拿到数据的时候我们会先做一遍数据清理,把垃圾数据清理掉。


今天我们拿QQ数据做示范。


我们命令行是怎么看数据!


[Asm] 纯文本查看 复制代码
more zy.txt
#然后空格进行翻页


效果如图:

1.png

从数据中得知:
---- 中间4个-
左边是账号,右边是密码
目前QQ最多就11位,密码最长16位,所以数据中位数最多31位(4+11+16),大于的都是垃圾(第一轮筛选)

我先用python 读取QQ操作

[Asm] 纯文本查看 复制代码
import codecs
filepath=r"C:\Users\Administrator\Desktop\zy.txt"
file=codecs.open(filepath,"rb","gbk","ignore")#按照指定编码
mylist=file.readlines()#返回一个list,读取到内存
 
#savefilepath="C:\Users\Administrator\Desktop\zy1.txt"
for line in mylist:
    QQlist=line.split('----')
    print(QQlist[1])


2.png

注:此方法是读取到内存,所以很占空间,会很卡。

数据中我们看到很多垃圾数据,我们看下垃圾数据

[Asm] 纯文本查看 复制代码
import codecs
filepath=r"C:\Users\Administrator\Desktop\zy.txt"
file=codecs.open(filepath,"rb","gbk","ignore")#按照指定编码
mylist=file.readlines()#返回一个list,读取到内存
 
#savefilepath="C:\Users\Administrator\Desktop\zy1.txt"
for line in mylist:
    QQlist=line.split('----')
    if len(line)>31:
        print(line)#打印垃圾数据


22.png

进行QQ清洗,在分别保存账号文本和密码文本。

[Asm] 纯文本查看 复制代码
import codecs
filepath=r"C:\Users\Administrator\Desktop\zy.txt"
file=codecs.open(filepath,"rb","gbk","ignore")#按照指定编码
mylist=file.readlines()#返回一个list,读取到内存
savegoodfilepath=r"C:\Users\Administrator\Desktop\zyQQGood.txt"
savebadfilepath=r"C:\Users\Administrator\Desktop\zyQQbad.txt"
filegood=open(savegoodfilepath,"wb")
filebad=open(savebadfilepath,"wb")
for  line  in  mylist:
 
    if  len(line)>31 or len(line)<=15:#(4+5+6)
        filebad.write(line.encode("utf-8"))
    else:
        QQlist = line.split('----')
        if  len(QQlist)==2:
            filegood.write(line.encode("utf-8"))
        else:
            filebad.write(line.encode("utf-8"))
 
filebad.close()
filegood.close()


效果图:

44.png

附件: 中央纪委pyhon数据清理.zip (3.81 KB, 下载次数: 27)

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

没有验证码 发表于 2018-1-30 18:19
附件的名字让我感到莫名奇妙的恐慌,肿么办
52P 发表于 2018-1-30 19:13
苏歌寒 发表于 2018-1-30 20:48
IrvingYang 发表于 2018-1-30 23:28
楼主的附件很皮
葫芦炒鸡蛋 发表于 2018-1-31 10:37
赶问楼主用的什么IDE,黑色的那个
小黑LLB 发表于 2019-2-1 14:50
写的不错,还有IDLE好评
jxfzlin 发表于 2019-3-23 13:06
好,下载使用
liangyun 发表于 2019-4-29 10:14
帮你节约大半代码量且优化效率并修复部分bug。。。temp.py import re
&#8203;
with open('1.txt', 'r', encoding='utf8') as f, \
         open('2.txt', 'w', encoding='utf8')as f2, \
         open('3.txt', 'w', encoding='utf8')as f3:
     for line in f.readlines():
         t = re.findall('(\\d{5,11}----\\w{6,16})', line.strip('\n'))
         f2.write(t[0] + '\n' if t else '')
         f3.write(line if not t else '')
&#8203;1.txt 12abc----123456...
1----12345678901234567890
123456789987654321----2
1.23----45678
1234567----789456fgdd
你好我是小言----你好我也是小言
123456789----你好我还是小言剩下两个会自动创建已知bug:密码为中文时会验证通过不解决了,过滤中文显得代码太长了,网上一百度就有
liangyun 发表于 2019-4-29 10:17

帮你节约大半代码量且优化效率并修复部分bug。。。

temp.py
import re

with open('1.txt', 'r', encoding='utf8') as f, \
        open('2.txt', 'w', encoding='utf8')as f2, \
        open('3.txt', 'w', encoding='utf8')as f3:
    for line in f.readlines():
        t = re.findall('(\\d{5,11}----\\w{6,16})', line.strip('\n'))
        f2.write(t[0] + '\n' if t else '')
        f3.write(line if not t else '')
1.txt
12abc----123456...
1----12345678901234567890
123456789987654321----2
1.23----45678
1234567----789456fgdd
你好我是小言----你好我也是小言
123456789----你好他们都叫我凉云

剩下两个会自动创建

已知bug:密码为中文时会验证通过

不解决了,过滤中文显得代码太长了,网上一百度就有

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 07:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表