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


Posted in Python onOctober 19, 2016

文本:

每行在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查询Mysql时返回字典结构的代码
Jun 18 Python
Python自定义函数的创建、调用和函数的参数详解
Mar 11 Python
Python中基本的日期时间处理的学习教程
Oct 16 Python
利用python程序生成word和PDF文档的方法
Feb 14 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
python实现大转盘抽奖效果
Jan 22 Python
python多线程下信号处理程序示例
May 31 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
Django视图扩展类知识点详解
Oct 25 Python
使用Python求解带约束的最优化问题详解
Feb 11 Python
python实现图像高斯金字塔的示例代码
Dec 11 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 #Python
python类中super()和__init__()的区别
Oct 18 #Python
Python 序列的方法总结
Oct 18 #Python
python 异常处理总结
Oct 18 #Python
python 队列详解及实例代码
Oct 18 #Python
django model去掉unique_together报错的解决方案
Oct 18 #Python
django批量导入xml数据
Oct 16 #Python
You might like
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
PHP base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
php Sql Server连接失败问题及解决办法
2009/08/07 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
Js动态创建div
2008/09/25 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python循环语句之break与continue的用法
2015/10/14 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
python for 循环获取index索引的方法
2019/02/01 Python
关于Keras Dense层整理
2020/05/21 Python
Python Map 函数的使用
2020/08/28 Python
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
中专自我鉴定范文
2013/10/16 职场文书
会计岗位职责范本
2014/03/07 职场文书
浪漫婚礼主持词
2014/03/14 职场文书
讲解员培训方案
2014/05/04 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
污水处理保证书
2015/05/09 职场文书
详解python的内存分配机制
2021/05/10 Python
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python