首页 运维杂谈python集合类型实例

python集合类型实例

运维派隶属马哥教育旗下专业运维社区,是国内成立最早的IT运维技术社区,欢迎关注公众号:yunweipai
领取学习更多免费Linux云计算、Python、Docker、K8s教程关注公众号:马哥linux运维

python集合类型实例

有两个多行文件,其中一个包含另一个文件内容,现在的需求是要从大的文件里去掉包含行,问怎么破,这是今天一个技术群里有人问的问题,实现这个有其实有很多方法,我先给一个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.

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

文章出处——python运维技术微信公众号

本文链接:https://www.yunweipai.com/7509.html

网友评论comments

发表回复

您的电子邮箱地址不会被公开。

暂无评论

Copyright © 2012-2022 YUNWEIPAI.COM - 运维派 京ICP备16064699号-6
扫二维码
扫二维码
返回顶部