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六大开源框架对比
Oct 19 Python
Python序列化基础知识(json/pickle)
Oct 19 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
Python在for循环中更改list值的方法【推荐】
Aug 17 Python
Python3实现腾讯云OCR识别
Nov 27 Python
selenium在执行phantomjs的API并获取执行结果的方法
Dec 17 Python
Python3 关于pycharm自动导入包快捷设置的方法
Jan 16 Python
解决django服务器重启端口被占用的问题
Jul 26 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
安装完Python包然后找不到模块的解决步骤
Feb 13 Python
python 控制台单行刷新,多行刷新实例
Feb 19 Python
如何基于python3和Vue实现AES数据加密
Mar 27 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
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
深入探究Django中的Session与Cookie
2017/07/30 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
python实现大量图片重命名
2020/03/23 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
Python内置函数locals和globals对比
2020/04/28 Python
如何利用python进行时间序列分析
2020/08/04 Python
监理员的岗位职责
2013/11/13 职场文书
会议接待欢迎词
2014/01/12 职场文书
检讨书模板
2015/01/29 职场文书
倡议书范文大全
2015/04/28 职场文书
少先队中队工作总结
2015/08/14 职场文书
中秋节作文(五年级)之关于月亮
2019/09/11 职场文书
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers