当前位置: 首页 > 编程笔记 >

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

岳玉书
2023-03-14
本文向大家介绍Python做文本按行去重的实现方法,包括了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实现按行切分文本文件的方法,包括了python实现按行切分文本文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现按行切分文本文件的方法。分享给大家供大家参考,具体如下: python脚本利用shell命令来实现文本的操作, 这些命令大大减少了我们的代码量。 比如按行切分文件并返回切分后得到的文件列表,可以利用内建的split命令进行切分。为

  • 本文向大家介绍python实现文本去重且不打乱原本顺序,包括了python实现文本去重且不打乱原本顺序的使用技巧和注意事项,需要的朋友参考一下 代码也是在网上找的,效率挺不错的,特别适合字典文件的去重 python 读取TXT到数组 列表去重,不打乱原来的顺序 补充 本文实例讲述了python读取TXT到数组及列表去重后按原来顺序排序的方法。分享给大家供大家参考。

  • 本文向大家介绍Python按行读取文件的简单实现方法,包括了Python按行读取文件的简单实现方法的使用技巧和注意事项,需要的朋友参考一下 1:readline() 一行一行得从文件读数据,显然比较慢; 不过很省内存; 测试读10M的sample.txt文件,每秒大约读32000行; 2:fileinput 写法简单一些,不过测试以后发现每秒只能读13000行数据,效率比上一种方法慢了两倍多; 3

  • 本文向大家介绍Python实现去除代码前行号的方法,包括了Python实现去除代码前行号的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现去除代码前行号的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 本文向大家介绍python实现按行分割文件,包括了python实现按行分割文件的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现按行分割文件的具体代码,供大家参考,具体内容如下 小编再为大家分享一段代码: 将文本文件按照指定的行数分割成数个小的文本文件 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍javascript实现数组去重的多种方法,包括了javascript实现数组去重的多种方法的使用技巧和注意事项,需要的朋友参考一下 废话不多说,直接拿干货! 先说说这个实例的要求:写一个方法实现数组的去重。(要求:执行方法,传递一个数组,返回去重后的新数组,原数组不变,实现过程中只能用一层循环,双层嵌套循环也可写,只做参考); 先给初学者解释一下什么叫数组去重(老鸟跳过):意思就是