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
猜你喜欢
- 1.散点图代码# This import registers the 3D projection, but is otherwise unu
- 在图片上右击设置你想放在的目录补充知识:pycharm没有sciview窗口的解决(换专业版pycharm!)只有专业版才有科学模式,too
- 八九年前,我在公司做设计,当时就已经做到技术总监,Photoshop是自学的,当时觉得全世界比我Photoshop强的人也不在多数。七年前,
- 这篇文章介绍了 5 个实用的 CSS 属性。你应该很熟悉,但很可能很少会使用到。我并不是在谈论展望全新的 CSS3 属性,我指的是旧的 CS
- 我的大体思路是:时时监听鼠标的坐标,当鼠标移动时,透明层随着鼠标移动,大图片相对透明层的移动而移动。不废话了,看代码。 <!DOCTY
- 一、rsa库(推荐)1、公钥加密、私钥解密# -*- coding: utf-8 -*-import rsa# rsa加密def rsaEn
- Node.js应用不需要经过编译过程,可以直接把源代码拷贝到部署机上执行,确实比C++、Java这类编译型应用部署方便。然而,Node.js
- 一、 通过runtime包进行多核设置1.NumCPU()获取当前系统的cpu核数2.GOMAXPROCS设置当前程序运行时占用的cpu核数
- 前言:本文简单讲述全文索引的应用实例,MYSQL演示版本5.5.24。Q:全文索引适用于什么场合?A:全文索引是目前实现大数据搜索的关键技术
- 最近做的asp.netMVC项目中需要对数据列表进行分类,这个本来就是基于bootstrap开发的后台,因此也就想着bootstrap是否有
- 对于某些项目来说,单页面不能很好的满足需求,所以需要将vue-cli创建的单页面项目改为多页面项目。需要修改以下几个文件:1、下载依赖glo
- DECLARE @LocalDate DATETIME, @UTCDate DATETIME, @LocalDate2 DATETIME S
- 区别1let和var用来声明变量,const用来声明常量。变量就是赋值后可以改变它的值,常量就是赋值后就不能改变它的值。当声明为对象时,可以
- 相比于原生的python开发核心包,Anaconda已经集成了许多的第三方库,但是这在实际应用中是远远不够的,因此我们需要手动安装第三方库使
- 当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样
- 本文实例讲述了Python使用文件锁实现进程间同步功能。分享给大家供大家参考,具体如下:简介在实际应用中,会出现这种应用场景:希望shell
- 代码如下# 爬取网易音乐import requestsfrom bs4 import BeautifulSoupimport urllib.
- 一、Python的字典在项目的开发过程中,如果遇到有映射关系的内容可以考虑使用Python中的字典进行存储数据,字典中冒号前的数据称为【键】
- 本文实例讲述了Thinkphp5框架实现获取数据库数据到视图的方法。分享给大家供大家参考,具体如下:这是学习thinkhp5的基础篇笔记。这
- 引入numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? num