Python做文本按行去重的实现方法

 更新时间:2016年10月19日 10:33:37   作者:aaa1111sss  
每行在promotion后面包含一些数字,如果这些数字是相同的,则认为是相同的行,对于相同的行,只保留一行。接下来通过本文给大家介绍Python做文本按行去重的实现方法,感兴趣的朋友一起看看吧

文本:

每行在promotion后面包含一些数字,如果这些数字是相同的,则认为是相同的行,对于相同的行,只保留一行。

思路:

根据字典和字符串切割。

建立一个空字典。

读入文本,并对每行切割前半部分,在读入文本的过程中循环在这个字典中查找,如果没找到,则写入该行到字典。否则,则表示该行已经被写入过字典了(即出现重复的行了),不再写入字典,这就实现了对于重复的行只保留一行的目的。

文本如下:

/promotion/232 utm_source
/promotion/237 LandingPage/borrowExtend/? ;
/promotion/25113 LandingPage/mhd
/promotion/25113 LandingPage/mhd
/promotion/25199 com/LandingPage
/promotion/254 LandingPage/mhd/mhd4/? ;
/promotion/259 LandingPage/ydy/? ;
/promotion/25113 LandingPage/mhd
/promotion/25199 com/LandingPage
/promotion/25199 com/LandingPage

程序如下:

line_dict_uniq = dict()
with open('1.txt','r') as fd:
for line in fd:
key = line.split(' ')[0]
if key not in line_dict_uniq.values():
line_dict_uniq[key] = line
else:
continue
print line_dict_uniq 
print len(line_dict_uniq)
# 这里是打印了不重复的行(重复的只打印一次),实际再把这个结果写入文件就可以了,
# 就不写这段写入文件的代码了

上面这个程序执行效率比较低,改成如下会提高一些:

line_dict_uniq = dict()
with open('1.txt','r') as fd:
for line in fd:
key = line.split(' ')[0]
if key not in line_dict_uniq.keys():
line_dict_uniq[key] = line
else:
continue
print line_dict_uniq
print len(line_dict_uniq)

继续补充一个函数

# -*- coding: utf-8 -*-
'''
只使用与较小的文件,比较大的文件运行时间长
'''
def quchong(infile,outfile):

  infopen = open(infile,'r',encoding='utf-8')
  outopen = open(outfile,'w',encoding='utf-8')
  lines = infopen.readlines()
  list_1 = []
  for line in lines:
    if line not in list_1:
      list_1.append(line)
      outopen.write(line)
  infopen.close()
  outopen.close()
quchong("源文件路径","目标文件路径")

以上所述是小编给大家介绍的Python做文本按行去重,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Python操作PDF实现制作数据报告

    Python操作PDF实现制作数据报告

    Python操作PDF的库有很多,比如PyPDF2、pdfplumber、PyMuPDF等等。本文将利用FPDF模块操作PDF实现制作数据报告,感兴趣的小伙伴可以尝试一下
    2022-12-12
  • Python、Javascript中的闭包比较

    Python、Javascript中的闭包比较

    这篇文章主要介绍了Python、Javascript中的闭包比较,本文分别讲解了Python和Javascript中的闭包,分对它们的不同做了一个简单的比较,需要的朋友可以参考下
    2015-02-02
  • Python Pandas中合并数据的5个函数使用详解

    Python Pandas中合并数据的5个函数使用详解

    数据合并是数据处理过程中的必经环节,pandas作为数据分析的利器,提供了五种常用的数据合并方式,让我们看看如何使用这些方法吧!
    2022-05-05
  • Django+uni-app实现数据通信中的请求跨域的示例代码

    Django+uni-app实现数据通信中的请求跨域的示例代码

    这篇文章主要介绍了Django+uni-app实现数据通信中的请求跨域的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • python自动化测试之连接几组测试包实例

    python自动化测试之连接几组测试包实例

    这篇文章主要介绍了python自动化测试之连接几组测试包实例,需要的朋友可以参考下
    2014-09-09
  • 提升Python程序运行效率的6个方法

    提升Python程序运行效率的6个方法

    这篇文章主要介绍了提升Python程序运行效率的6个方法,包括依赖外部扩展、代码优化等内容,需要的朋友可以参考下
    2015-03-03
  • Python全景系列之模块与包全面解读

    Python全景系列之模块与包全面解读

    这篇文章将带大家深入探讨Python模块与包的基本概念,使用方法以及其在实际项目中的应用,同时也会揭示一些鲜为人知,却又实用的技术细节
    2023-05-05
  • python组合无重复三位数的实例

    python组合无重复三位数的实例

    今天小编就为大家分享一篇python组合无重复三位数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python的in,is和id函数代码实例

    Python的in,is和id函数代码实例

    这篇文章主要介绍了python的in,is和id函数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • pycharm永久激活超详细教程

    pycharm永久激活超详细教程

    这篇文章主要介绍了pycharm永久激活超详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10

最新评论