【人生苦短,我用python!】几行python处理文件里面的重复内容(包括了读写文件,过滤重复!)

The beauty of python 1

https://blog.csdn.net/dengyaolongacmblog/article/details/38016905
置顶 2014年07月21日 15:28:18 yaolongdeng 阅读数:2189 标签: python  更多
个人分类: Python
写python已经差不多有三个多月了,因为简洁,越来越喜欢这个"巨莽"了,我相信绝大多数人同样喜欢简洁。

今天第一次记录,是我刚刚再工作上遇到的一个小问题,为了更方便理解,我把问题概括成这样:

我有三百多万条记录,但是里面有重复(里面由数字和数字组成),我想要得到不重复的数据。

这是一个老问题,用c++的话很自然就会用到set,大概写法就是

#include<iostream>
#include<set>
#include<string>
#include<cstdio>
using namespace std;
 
int main(){
    freopen("record.txt","r",stdin);
    freopen("uniquerec.txt","w",stdout);
    set<string> st;
    string mstr;
    while(cin>>mstr){
       st.insert(mstr);
    }
    for(set<string>::iterator itr=st.begin();itr!=st.end();itr++){
        cout<<*itr<<endl;
    }
    fclose(stdin);
    fclose(stdout);
   
}

而用python,则是这样的

#!/usr/bin/env python
# coding=utf-8
rec=open('record1.txt','r').readlines()
uniquerec=open('unique.txt','w')
st=set(rec)
uniquerec.write(''.join(st))
怎么样?是不是让人十分喜欢?短短几行,包括了读写文件,过滤重复!

为了让不熟悉py的同学明白,我简单说一下用到的。

读写文件就是open('文件名字',参数[r为读,w为写,a为追加]')

用readlines()会返回一个列表

而利用列表lst创建集合则只需要

st=set(lst)

而'字符串'.join是十分好用的连接,利用字符串来连接容器内的元素,我用的是空字符,就是直接串连起来。

之后,因为我的文档分开了两个存储,所以需要求并运算。py只需要这么做。

#!/usr/bin/env python
# coding=utf-8
rec=open('record1.txt','r').readlines()
rec2=open('record2.txt','r').readlines()
uniquerec=open('unique.txt','w')
st=set(rec)|set(rec2)
uniquerec.write(''.join(st))
 
没错,就是 | 用于求并,同理&则是求交 ,-是求差,^是求补。
python的简洁和高效你感受到了吗?

人生苦短,我用python!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值