如何将2个.txt文件与python脚本进行比较?

时间:2018-12-03 13:51:29

标签: python linux

请给我一个比较2个.csv文件的python脚本,我想将其更改为比较2个.txt文件。第一个.txt文件包含3列ID,第二个.txt文件包含具有ID的Fasta序列。我想要一个比较两个文件的脚本:当第一个文件的第一列或第三列中的ID(忽略第二列,因为它与第一列相同)时,从第二个文件中找到其匹配项,则输出应为来自第一个文件的ID,然后是紧跟该ID的Fasta序列。谢谢! :)

   with open('data1.csv', 'r') as f:
    for line in f.readlines():
        line = line.replace("\n", "")
        full_name = line.split('\t')
        accession_x = full_name[0]

        with open('data2.csv', 'r') as f1:
             for line1 in f1.readlines()[1:]:  # ignores the first line
                line1 = line1.replace("\n", "")

                full_name1 = line1.split(' ')
                accession_y = full_name1[0].replace(" ", "")
                accession_z = full_name1[1].replace(" ", "")
                main_accession = accession_x + " " + accession_z + " " + accession_y

                if accession_x == accession_z:
                    print(main_accession)

2 个答案:

答案 0 :(得分:1)

首先,必须将文件名从“ data1.csv”更改为“ data1.txt”,从“ data2.csv”更改为“ data2.txt”。

第二:取决于文本文件的格式。您当前的代码假定第一个文件中的行由制表符分隔,第二个文件中的行由空格分隔。这可以从split('\ t')和split('')中看出。如果这个假设成立,那么代码应该可以工作。

希望这会有所帮助!

答案 1 :(得分:0)

由于您仅描述了文件的格式,因此很难提供确切的代码,但是我做了一些假设,并根据它们做出了一个假设。

 with open('file1.txt', 'r') as  f1:
        for line1 in f1.readlines():
            l1 = line1.strip().split('\t')

            with open('file2.txt', 'r') as f2:
                for line2 in f2.readlines():
                    l2 = line2.strip().split(' ')

                    if l1[0] == l2[0]:
                        print(l1[0] + " " + l2[1] + " " + l2[0])
                    elif l1[1] == l2[0]:
                        print(l1[1] + " " + l2[1] + " " + l2[0])

这些假设是

  • 我假设您的第一个文件有三列,各列之间用制表符分隔。
  • 其中只有第一列和第三列应该与第二个文件进行比较。
  • 第二个文件有两列,第一列是ID,第二列是序列。 (如果其他方法只是更改代码中的数字)
  • 如果只跳过文件的第一行,则两个文件中都没有标题。