Как удалить строки, которые начинаются с одинаковых символов (но являются случайными) в Python? - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь удалить строки в файле, которые начинаются с тех же 5 символов, однако первые 5 символов являются случайными (я не знаю, какими они будут)?

У меня есть код, который читает последние 5 символов первой строки файла и сопоставляет их с ПЕРВЫМИ 5 символами случайной строки в файле, который имеет те же 5 символов. Проблема в том, что когда два или более совпадений имеют одинаковые первые 5 символов, код испортился. Мне нужно что-то, что читает все строки в файле и удаляет одну из двух строк, которые имеют одинаковые 5 первых символов.

Пример (проблема):

CCTGGATGGCTTATATAAGAT***GTTAT***

***GTTAT***ATAATATACCACCGGGCTGCTT

***GTTAT***ATAGTTACAGCGGAGTCTTGTGACTGGCTCGAGTCAAAAT

Что мне нужно в результате после того, как один из них вынут из файла:

CCTGGATGGCTTATATAAGAT***GTTAT***

***GTTAT***ATAATATACCACCGGGCTGCTT

(без третьей строки)

Я был бы очень признателен, если бы вы могли объяснить, как я мог бы поступить так же словами.

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете сделать это, например, так:

FILE_NAME = "data.txt"                       # the name of the file to read in
NR_MATCHING_CHARS = 5                        # the number of characters that need to match

lines = set()                                # a set of lines that contain the beginning of the lines that have already been outputted
with open(FILE_NAME, "r") as inF:            # open the file
    for line in inF:                         # for every line
        line = line.strip()                  # that is
        if line == "": continue              # not empty
        beginOfSequence = line[:NR_MATCHING_CHARS]
        if not (beginOfSequence in lines):   # and the beginning of this line was not printed yet
            print(line)                      # print the line
            lines.add(beginOfSequence)       # remember that the beginning of the line
...