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里对list中的整数求平均并排序
Sep 12 Python
Python编写屏幕截图程序方法
Feb 18 Python
Python中下划线的使用方法
Mar 27 Python
用Python代码来绘制彭罗斯点阵的教程
Apr 03 Python
Python表示矩阵的方法分析
May 26 Python
Python中shapefile转换geojson的示例
Jan 03 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
基于Python检测动态物体颜色过程解析
Dec 04 Python
基于Python绘制美观动态圆环图、饼图
Jun 03 Python
python中round函数如何使用
Jun 19 Python
Python包argparse模块常用方法
Jun 04 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
Jun 05 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
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
php递归创建目录的方法
2015/02/02 PHP
linux下php上传文件注意事项
2016/06/11 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
php实现的http请求封装示例
2016/11/08 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
精通JavaScript的this关键字
2020/05/28 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
JSON stringify方法原理及实例解析
2020/10/23 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
自我反省检讨书
2014/01/23 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
三年级学生期末评语
2014/12/26 职场文书
特此通知格式
2015/04/27 职场文书
岁月神偷观后感
2015/06/11 职场文书
工作服管理制度范本
2015/08/06 职场文书