Как сравнить 2 файла .txt со скриптом Python? - PullRequest
0 голосов
/ 03 декабря 2018

Пожалуйста, у меня есть скрипт на python, который сравнивает 2 файла .csv, которые я хочу изменить, чтобы сравнить 2 файла .txt.Первый файл .txt содержит 3 столбца идентификаторов, а второй файл .txt содержит последовательности Fasta с их идентификаторами.Я хочу сценарий, который сравнивает 2 файла: когда идентификатор из первого или третьего столбца первого файла (игнорировать второй столбец, потому что он совпадает с первым столбцом) находит свое соответствие из второго файла, вывод должен бытьидентификатор из первого файла и рядом с ним последовательность 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 голосов
/ 03 декабря 2018

Так как вы описали только форматы файлов, трудно дать точный код, но я сделал некоторые предположения и написал один в соответствии с ними.

 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])

Предположения таковы:

  • Я предположил, что в вашем первом файле есть три столбца, разделенных вкладками.
  • Из них только первый и третий столбцы следует сравнивать со вторым файлом.
  • ВторойФайл имеет два столбца, первый столбец с идентификатором, второй столбец с последовательностью.(Если наоборот, просто измените числа в коде)
  • Ни в одном из файлов нет заголовков, если просто пропустить первую строку файлов.
0 голосов
/ 03 декабря 2018

Во-первых, имена файлов должны быть изменены с «data1.csv» на «data1.txt», а «data2.csv» на «data2.txt».

Во-вторых: это зависит от того, кактекстовые файлы сформулированы.Ваш текущий код предполагает, что строки в первом файле разделены табуляцией, а строки во втором файле разделены пробелами.Это видно из split ('\ t') и split ('').Если это предположение верно, то код должен работать.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...