8288分类目录 8288分类目录 8288分类目录
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

python集合类型实例

来源:本站原创 浏览:73次 时间:2022-08-31

有两个多行文件,其中一个包含另一个文件内容,现在的需求是要从大的文件里去掉包含行,问怎么破,这是今天一个技术群里有人问的问题,实现这个有其实有很多方法,我先给一个shell的解决方法,我们假设fileone.txt文件包含filetwo.txt内容,shell方法如下:

#!/bin/sh

 

for i in `cat  fileone.txt`

do

  if ! grep $i filetwo.txt >/dev/null 2>&1

  then

     echo $i >>newfile.txt

  fi

done

这样后生成的文件就去掉了filetwo.txt的包含的行,那如果要求两个文件都包含的行呢,那就在写一个脚本,如何要合并两个文件,而且要不能有重复行呢,那就再写一个脚本,发现随着需求变化,你不知不觉就整了好几个脚本,所以在实际工作中需求是多样的,其实上面说的内容,大家也应该感到熟悉,以上的操作其实就是我们高中学的集合的概念,说到集合,那python里本身就带集合的数据类型,可以对集合的数据类型直接操作,那接下来我们来看看如果用python来实现以上的需求:

#!/usr/bin/evn python

 

def genset(fname):

    flist = []

    fi = open(fname)

    for line in fi:

        line = line.strip()

        flist.append(line)

    fi.close()

    return set(flist)

 

if __name__ == '__main__':

    s1 = genset('fileone.txt')

    s2 = genset('filetwo.txt')

    s3 = s1 - s2

    fi = open('newfile.txt','a+')

    for li in list(s3):

        fi.write(li + '\n')

    fi.close()

在python里集合的类型的这么使用的,假设我们有集合s和t,基本操作如下:

1、联合(|),合并s和t形成一个新的集合,新集合的每个元素都属于s,t的集合的其中之一成员。

2、交接(&),这个很容易理解,就是两个圆相交的部分,属于共同拥有的。

3、差补(-),这就是我们例子中用到的,s-t 后的形成的新集合只属于s而不属于t,这样就在s中有t的给去掉了。

4、对称差分(^),这个形成新的集合成员要么属于s,要么属于t,但不能同时属于s和t.

熟练掌握了集合类型大家就可以在工作中灵活运用。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net