在python中搜索和删除数据

2024-04-27 03:26:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个文件,其中有一个网站列表。主文件称为A.txt,处理后的文件称为B.txt

A.txt的内容

www.cnn.com
www.google.com
www.gmail.com
www.iamvishal.com

B.txt的内容

www.cnn.com
www.google.com

我想制作一个python脚本,在文件之间进行比较或搜索,并创建一个新建.txt只有A.txt中的站点还没有出现在B.txt中

由于我是新来的,我在这个网站上读了很多书,发现了一些很好的例子。 我已经设法把工作做完了,但恐怕我的逻辑是错误的。请参见以下代码:

processedfile = open("b.txt")
masterfile = open("a.txt")
f=open("new.txt","w")

for line in processedfile.readlines():
  line = line.strip()
  print line;
  print "We are printing the processed part"
  for linetwo in masterfile.readlines():
     linetwo= linetwo.strip()
     print linetwo
     print "we are printing the master part"
     if linetwo != line:
            f.write(linetwo+"\n")

所以新文件新建.txt包含除第一个条目外的所有在A.txt中但不在B.txt中的站点。我还担心还有其他逻辑but,因为我将B.txt与A.txt保持在同一序列中,因此如果站点不在序列中,代码很容易中断。你知道吗

的内容新建.txt你知道吗

www.google.com
www.gmail.com
www.iamvishal.com

请告诉我现在该怎么办,因为我很困惑。你知道吗


Tags: 文件txtcom内容站点网站wwwgoogle
3条回答

将文件读入两个set并使用set difference。例如:

a = set(line.strip() for line in open('a.txt', 'r'))
b = set(line.strip() for line in open('b.txt', 'r'))

new = open('new.txt', 'w')
new.write('\n'.join(a - b))

如果文件很小,可以使用集合来简化代码:

master = set(line.strip() for line in open('a.txt'))
processed = set(line.strip() for line in open('b.txt'))
for name in master - processed:
  print name
a = set(open("a.txt"))
b = set(open("b.txt"))
new = open("new.txt", "w")
new.write("".join(a - b))

相关问题 更多 >