Читать и перечислять уникальные слова из текстового файла, используя Python - PullRequest
0 голосов
/ 31 октября 2019

поэтому моя задача состоит в следующем:

Write a program to list which letters in the file seqs.txt are not A, T, C, or G. It should only list
each letter once. Hint: Start with an empty list for unknown letters. Then use two loops to scan
letters in each sequences.

В настоящее время я застрял в знании того, как реализовать два цикла для сканирования писем.

def main():
    with open('seqs.txt','r') as seqs_file:
        unknown = ("A","T","G","C")
        #unknown_list = ("B","D","E","F","H","I","J","K","L","M","N","O","P"
                         # ,"Q","R","S","U","V","X","Y","Z")
        for unknown in seqs_file:
            if True:
                return()
            else:
                print(#the other letters not ATCG#)
main()

Это код, который я знаю. Я пытался использовать команду .read(), но после этого я не уверен, как сделать два цикла. Был бы признателен за любую помощь в получении меня на правильном пути!

РЕДАКТИРОВАТЬ: Текстовый файл содержит это:

Просто в качестве примера.

Ответы [ 4 ]

1 голос
/ 31 октября 2019

Я бы использовал это и проигнорировал бы глупые подсказки, которые совершенно сбивают вас с курса:

import string

with open('seqs.txt') as fin :
    characters = [i.upper() for i in fin.read() if i in string.letters]

result = set(characters) - set(['A', 'T', 'C', 'G'])

print sorted(result)
1 голос
/ 31 октября 2019

Имеет больше смысла использовать наборы, чем списки, если вы хотите уникальности ...

known = {"A", "T", "G", "C"}
unknown = set()
with open('seqs.txt','r') as seqs_file:
    for letter in seqs_file.read():
        unknown.add(letter)
unknown -= known
for letter in unknown:
    print(letter)
0 голосов
/ 31 октября 2019

Насколько мне известно, для вашего вопроса проще всего прочитать файл, разбить его и составить список. Чтобы получить уникальные элементы, преобразуйте его в набор и простой цикл for предоставит вам ваше решение.

f = open("seq.txt", 'r')
unknown_letters = list(f.read())
known_letters = ['A', 'T', 'G', 'C']
unknown_unique_letters_set = set(unknown_letters)

for i in unknown_unique_letters_set:
    if i in known_letters:
        pass
    else:
        print(i)

, если вы не хотите использовать set () и хотите придерживаться списка ниже, это код:

f = open("seq.txt", 'r')
unknown_letters = list(f.read())
known_letters = ['A', 'T', 'G', 'C']
visited_letters = []
for i in unknown_letters:
    if i in known_letters:
        pass
    elif i in visited_letters:
        pass
    else:
        visited_letters.append(i)

print(visited_letters)
0 голосов
/ 31 октября 2019
def main():
    #y.txt contains this space separated string 'A B C D E F G H I J K L M N O P Q R S T U V X Y Z'
    with open('some_file.txt','r') as seqs_file:
        data = seqs_file.read().split()
        other = []
        unknown = ("A","T","G","C")
        for d in data:
            if d in unknown:
                pass
            elif d not in other:
                print(d)
                other.append(d)
main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...