citespace数据处理:用python对Ref文档进行去重方式
作者:Mr.Bean-Pig 发布时间:2022-07-06 06:01:13
python对Ref文档进行去重
首先将txt文档提取到Excel表格中筛选出重复项,并且整理到txt中:
需要去重的目标txt也准备好:
接下来运行代码,注意代码中的路径需要自己按实际情况修改:
#coding:utf-8
#__author__ ='pig'
# 实现去重功能
import re
# 需要去重的标题列表
title_need_delete = []
f0 = open('D:\Desktop\数据\\need_delete.txt',encoding='utf-8')
for line in f0.readlines():
title_need_delete.append(line)
#print(title_need_delete)
# 一键多值字典0
dict={}
# 标题列表
title_list = []
f1=open('D:\Desktop\数据\\sum.txt',encoding='utf-8')
data=f1.readlines()
# print data1
f1.close()
num = 0
# 第一次遍历:构建字典,能看出每篇文章出现的次数
for index,line in enumerate(data):
if line[0:2] == 'T1':
num+=1
title = line[3:]
if title not in title_list:
# 向字典中添加新key
dict.setdefault(title,[]).append(1)
title_list.append(title)
else:
# 修改该文章出现的次数
dict[title][0] += 1
#print(dict)
print("原数据量:"+str(num))
f2 = open('after_delete.txt', 'w', encoding='utf-8')
delete_num = 0
after_num = 0
# 第二次遍历:将文本写入新文件(每篇文章数据整段写入),对于每篇文章,若出现在黑名单中,则需要跳过,直到最后一次出现才写入
for index,line in enumerate(data):
# 每篇文章先判定
if line[0:2] == 'RT':
# 定位至标题行
index_1 = index
while(data[index_1][0:2] != 'T1'):
index_1 += 1
# 提取标题
title = data[index_1][3:]
# 如果在黑名单里且不是最后一次出现,则跳过此文章,并将字典中次数-1
if title in title_need_delete and dict[title][0] > 1:
# print('跳过:'+ title)
dict[title][0] -= 1
delete_num += 1
# 跳过
continue
else :
# 不在黑名单中则正常写
f2.writelines(data[index])
after_num += 1
index += 1
while(data[index][0:2] != 'RT'):
f2.writelines(data[index])
index += 1
if index == len(data):
break
print("去重完成!")
print("删除重复数据:" + str(delete_num))
print("剩余数据:" + str(after_num))
f2.close()
运行结果:
Python文件自动去重
平日里一来无聊,二来手巧,果然下载了好多资料,搞得我小小的硬盘(已经扩到6T了)捉襟见肘,
有次无意间,发现有两个居然长得一毛一样,在房子这么小的情况下,我怎能忍两个一毛一样的东西躺在我的硬盘里,果断搞掉一个,整理一下,本来想文件名一样的就保留一份,但问题出现了,居然有名字一样,内容却完全不一样的文件,想我背朝黄土面朝天吹着空调吃着西瓜下载下来的东西,删除是不可能的,这辈子都是不可能删除的。可是我也又不能把这数以亿计的文件挨个打开看看里面一样不一样吧,这个工程我大概够我做了好久好久了,有没有办法搞个软件帮帮我呢,答案是肯定的,要不然我也不用在这里写这个博客了(应该是苦逼的一个一个打开比较吧),说正题,Python提供了一个比较文件内容的东西,那就是哈希算法
MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。
说了这么长,总结出来就一句,这玩意就是文件的指纹,几乎每个文件是唯一的(碰到重复的,恭喜你,可以去买彩票了),那我们就把这个指纹拿出来,一个一个比对,肯定不能会有漏网的文件,既不会错杀三千,也不使一文件漏网,原理上通了,那么我们就要去搞个代码来帮我完成这个工作,作为最好用的语言,Python就这样被我翻了牌子
代码如下
# -*- coding:utf-8 -*-
import os
import hashlib
import time
import sys
#搞到文件的MD5
def get_ms5(filename):
m = hashlib.md5()
mfile = open(filename , "rb")
m.update(mfile.read())
mfile.close()
md5_value = m.hexdigest()
return md5_value
#搞到文件的列表
def get_urllist():
base = ("D:\\lwj\\spider\\pic\\")#这里就是你要清缴的文件们了
list = os.listdir(base)
urllist = []
for i in list:
url = base + i
urllist.append(url)
return urllist
#主函数
if __name__ == '__main__':
md5list = []
urllist = get_urllist()
print("test1")
for a in urllist:
md5 = get_ms5(a)
if(md5 in md5list):
os.remove(a)
print("重复:%s" % a)
else:
md5list.append(md5)
print("一共%s张照片" % len(md5list))
效果
这战斗力杠杠的,啥叫科技改变生活,此之谓也
来源:https://blog.csdn.net/z714405489/article/details/112708628
猜你喜欢
- 前言最近开始使用 robot framework 测试c++的动态库,robot framework 是跑在 windows 上面,c++动
- 前言在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程是一样的.如果重复去写操作过程会增加代码量,对应这种多组数
- 在多线程中使用lock可以让多个线程在共享资源的时候不会“乱”,例如,创建多个线程,每个线程都往空列
- 一:绑定方法:其特点是调用方本身自动作为第一个参数传入1.绑定到对象的方法:调用方是一个对象,该对象自动传入2.方法绑定到类:调用方是类,类
- MySQL字符集多种多样,下面为列举了其中三种最常见的字符集查看方法,该方法供您参考,希望对学习MySQL数据库能有所启迪。一、查看MySQ
- Python函数和代码复用什么是函数:  函数是一段具有特定功能的,可重用的语句组,通过函数名来表示和调
- 本文实例讲述了Python使用try except处理程序异常的三种常用方法。分享给大家供大家参考,具体如下:如果你在写python程序时遇
- 一扯上文化二字,总觉虚无缥缈、漫无边际,或者老气横秋,如何有趣地利用中华文化的思想和符号,结合现代的元素,使其成为有意思的传播手法,这个问题
- 俺觉得自 己试着写写sql,调试调试还是有帮助的,读人家sql例子好像读懂了,自己写就未 必思路正确,调试得通,写得简洁。 这篇文字在网上被
- ①捕捉一个异常捕捉一个异常以用0作为除数会得到ZeroDivisionError异常为例,print(1/0)为例程序的持续执行,不因该异常
- 作为一个信号库,使用时候是支持一对一以及一对多的订阅模式,可以实现发送数据等,一般情况下,只要能够使用到Blinker的,一般都是应用在技术
- Linux 自动备份oracle数据:曾经有个同事,来回操作开发和生产的数据库,结果误删了生产的数据库,那种心情我想不是一般人能理解的,虽然
- 函数名:FenYe(url,pageCount,recordCount,curPage,cssstyle)  
- 1.什么是搜索引擎?搜索引擎是“对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集、信息整理和用户查询三部分”。如图1是搜索引
- 前言当我们编写任何程序时,都会遇到一些错误,会让我们有挫败感,所以我有一个解决方案给你。 今天在这篇文章中,我们将讨论错误类型error:
- 问题你想对在Unix系统上面运行的程序设置内存或CPU的使用限制。解决方案resource 模块能同时执行这两个任务。例如,要限制CPU时间
- 导言:到目前为止,我们的教程围绕的是text数据。然而,很多应用程序既需要处理text数据,也需要处理二进制数据。比如招聘网站可能需要用户上
- 配置如下TEMPLATES = [下面'context_processors': [中添加'django.core.
- 这个类可以用来搜索在给定的文本目录中的文件。 它可以给定目录遍历递归查找某些文件扩展名的文件。 并打开找到的文件,并检查他们是否包含搜索词语
- 阅读系列教程上一篇:FrontPage2002简明教程二:文字与图像的处理通常网页的布局使用到的是FrontPage 2002中的表格和框架