【问题标题】:How to read two files and write a file with the content which matches two files and writes anothe file which doesnot match?如何读取两个文件并写入内容匹配两个文件的文件并写入另一个不匹配的文件?
【发布时间】:2014-05-29 02:27:11
【问题描述】:

这是我的脚本

 fo1=open("foo1.txt","wt")
 fo1.write('bangalore\n')
 fo1.write("delhi\n")
 fo1.write("mumbai\n")
 fo1.close()
 fo2=open("foo2.txt","wt")
 fo2.write("bangalore\n")
 fo2.write("chennai\n")
 fo2.write("mumbai\n")
 fo2.close()
 file1=open("foo1.txt","r+")
 file2=open("foo2.txt","r+")
 FO=open("output.txt","wt")
 FO1=open("output1.txt","wt")
 x=file1.readlines()
 y=file2.readlines()
 for line1 in x:
     for line2 in y:
         if line1 == line2:
             FO.write(line1)
//write FO1 with the content which doenot match
 FO.close()
 FO1.close()
 file1.close()
 file2.close()

输出应该是这样的 FO应该有

bangalore
mumbai

FO1 应该有

chennai
delhi

如何读取两个文件,写入一个内容匹配两个文件的文件,写入另一个不匹配的文件?

【问题讨论】:

  • 您是在问我们该怎么做,还是告诉我们?您提供的代码似乎有效地满足了您的要求......
  • 如果您的输入是 fo1 == bangalore,chittagong,delhi,mumbai 和 fo2 == bangalore,delhi,mumbai,您期望什么输出?基本上你对文件之间“差异”的定义是什么?
  • 编辑:抱歉,上面的评论是假设在 fo2 中交换了德里和孟买的顺序 ==

标签: python file input


【解决方案1】:

你可以这样试试:

FO1=open("output1.txt","wt")
FO2=open("output2.txt","wt")
one=file1.readlines()
two=file2.readlines()
for line1 in one:
    if line1 in two:
        FO1.write(line1)
        two.remove(line1)
    else:
        FO2.write(line1)
for line2 in two:
   FO2.write(line2)

【讨论】:

    【解决方案2】:

    你很接近。您唯一缺少的是您需要从第二个列表中删除公共元素,然后写出第二个列表中的剩余项目。

    x=file1.readlines()
    y=file2.readlines()
    for line1 in x:
        if line1 in y:
            FO.write(line1)
            y.remove(line1)
        else:
            FO1.write(line1)
    for line2 in y:
       FO1.write(line2)
    

    【讨论】:

      【解决方案3】:

      将 x 和 y 转换为设置然后使用交集和差分方法,请参阅此link

      例子:

      FO.write(set(x) & set(y))
      FO1.write('\n'.join((set(x) - set(y) | set(y) - set(x))))
      

      【讨论】:

        【解决方案4】:
        x=file1.readlines()
        y=file2.readlines()    
        print list(set(x)&set(y))
        #output =['bangalore\n', 'mumbai\n']
        a=list(set(x)&set(y))
        print list((set(x)|set(y)) - set(a))
        #output=['delhi\n', 'chennai\n']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-07
          • 1970-01-01
          • 1970-01-01
          • 2021-01-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-16
          相关资源
          最近更新 更多