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中逗号的三种作用实例分析
Jun 08 Python
Python网络爬虫出现乱码问题的解决方法
Jan 05 Python
Python设计模式之命令模式简单示例
Jan 10 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
python 输入一个数n,求n个数求乘或求和的实例
Nov 13 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
Dec 14 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
阿里云ECS服务器部署django的方法
Aug 29 Python
Python实现图片识别加翻译功能
Dec 26 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
Python 内存管理机制全面分析
Jan 16 Python
python函数指定默认值的实例讲解
Mar 29 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绘制一个扇形的方法
2015/01/24 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
Javascript 遍历对象中的子对象
2009/07/03 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
Javascript基础教程之while语句
2015/01/18 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
python实现发送邮件及附件功能
2021/03/02 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
python实现弹窗祝福效果
2019/04/07 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
Python with语句和过程抽取思想
2019/12/23 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
2020/07/01 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
如何用python 操作zookeeper
2020/12/28 Python
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
初一学生期末评语
2014/04/24 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
工作推荐信模板
2015/03/25 职场文书
优秀员工演讲稿
2019/06/21 职场文书
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android