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实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
微信跳一跳游戏python脚本
Apr 01 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
python 函数内部修改外部变量的方法
Dec 18 Python
Python日期时间Time模块实例详解
Apr 15 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
Python在OpenCV里实现极坐标变换功能
Sep 02 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
Django REST framework 单元测试实例解析
Nov 07 Python
python使用scapy模块实现ARP扫描的过程
Jan 21 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
Mar 03 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 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
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
JavaScript表单常用验证集合
2008/01/16 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
js简单实现交换Li的值
2014/05/22 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
Python实现的简单万年历例子分享
2014/04/25 Python
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
selenium+python实现自动登录脚本
2018/04/22 Python
python读写csv文件实例代码
2019/07/05 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
Django中的session用法详解
2020/03/09 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
高中体育教学反思
2014/01/29 职场文书
保卫科工作岗位职责
2014/03/01 职场文书
园艺师求职信
2014/03/10 职场文书
创先争优一句话承诺
2014/05/29 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
工程部岗位职责
2015/02/10 职场文书
刮痧观后感
2015/06/05 职场文书
工作报告范文
2019/06/20 职场文书
win11无线投屏在哪设置? win11无线投屏功能的使用方法
2022/04/08 数码科技