时间:2021-05-22
文本:
每行在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] = lineelse:continueprint 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] = lineelse:continueprint line_dict_uniqprint 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做文本按行去重,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了python实现按行切分文本文件的方法。分享给大家供大家参考,具体如下:python脚本利用shell命令来实现文本的操作,这些命令大大减少了我们
本文实例讲述了VB实现按行读取文本文件的方法。分享给大家供大家参考。具体如下:'(generaldeclaration)DimnFileNumAsInteger
python中的pandas模块中对重复数据去重步骤:1)利用DataFrame中的duplicated方法返回一个布尔型的Series,显示各行是否有重复行,
本文实例讲述了Python统计文件中去重后uuid个数的方法。分享给大家供大家参考。具体如下:利用正则表达式按行获取日志文件中的的uuid,并且统计这些uuid
本文实例讲述了JavaScript基于对象方法实现数组去重及排序操作。分享给大家供大家参考,具体如下://用对象方法实现数组去重Array.prototype.