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中mechanize库的简单使用示例
Jan 10 Python
python任务调度实例分析
May 19 Python
Python 中开发pattern的string模板(template) 实例详解
Apr 01 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
python监控进程脚本
Apr 12 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 Python
Python 模拟动态产生字母验证码图片功能
Dec 24 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
Apr 26 Python
Python3如何在服务器打印资产信息
Aug 27 Python
详解python算法常用技巧与内置库
Oct 17 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
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
php精度计算的问题解析
2019/06/21 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
2016/05/05 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Python如何测试stdout输出
2020/08/10 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
东方红海科技面试题软件测试方面
2012/02/08 面试题
2014年上半年工作自我评价
2014/01/18 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python