citespace数据处理:用python对Ref文档进行去重方式

 更新时间:2022年11月18日 10:22:03   作者:Mr.Bean-Pig  
这篇文章主要介绍了citespace数据处理:用python对Ref文档进行去重方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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))

效果

这战斗力杠杠的,啥叫科技改变生活,此之谓也

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 利用Pytorch实现获取特征图的方法详解

    利用Pytorch实现获取特征图的方法详解

    这篇文章主要为大家详细介绍了如何利用Pytorch实现获取特征图,包括提取单个特征图和提取多个特征图,文中的示例代码讲解详细,需要的可以参考一下
    2022-10-10
  • python中argparse模块基础及使用步骤

    python中argparse模块基础及使用步骤

    argsparse是python的命令行解析的标准模块,内置于python,不需要安装。这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行,接下来通过本文给大家介绍python argparse模块的相关知识,感兴趣的朋友一起看看吧
    2022-06-06
  • Python执行dos和Linux命令的方法详解

    Python执行dos和Linux命令的方法详解

    在实际开发中,有时为了方便,可能需要执行dos命令或者Linux命令。比如说执行某些shell脚本,上传下载一些文件等。本文总结了一些Python执行dos和Linux命令的方法,需要的可以了解一下
    2022-10-10
  • 开源Web应用框架Django图文教程

    开源Web应用框架Django图文教程

    Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django是一个开放源代码的Web应用框架,由Python写成。下面我们来一步步学习下吧
    2017-03-03
  • Python使用虚拟环境(安装下载更新卸载)命令

    Python使用虚拟环境(安装下载更新卸载)命令

    这篇文章主要为大家介绍了Python使用虚拟环境(安装下载更新卸载)命令,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • python 批量解压压缩文件的实例代码

    python 批量解压压缩文件的实例代码

    这篇文章主要介绍了python 批量解压压缩文件的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • 基于Python+Matplotlib实现直方图的绘制

    基于Python+Matplotlib实现直方图的绘制

    Matplotlib是Python的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。本文将为大家介绍如何用matplotlib绘制直方图,感兴趣的朋友可以学习一下
    2022-04-04
  • 解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题

    解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题

    今天小编就为大家分享一篇解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python操作MongoDB数据库PyMongo库使用方法

    Python操作MongoDB数据库PyMongo库使用方法

    这篇文章主要介绍了Python操作MongoDB数据库PyMongo库使用方法,本文讲解了创建连接、连接数据库、连接聚集、查看全部聚集名称、查看聚集的一条记录等操作方法,需要的朋友可以参考下
    2015-04-04
  • python  fire库的使用实例教程

    python  fire库的使用实例教程

    fire是python中用于生成命令行界面(Command Line Interfaces, CLIs)的工具,不需要做任何额外的工作,只需要从主模块中调用fire.Fire(),它会自动将你的代码转化为CLI,Fire()的参数可以说任何的python对象,对python fire库使用感兴趣的朋友一起看看吧
    2022-12-12

最新评论