Выполнять итерацию по индексам каждой строки в файле строк одинаковой длины, при этом создавая новые строки каждого значения из отдельных индексов - PullRequest
1 голос
/ 04 июня 2019

У меня есть файл данных, содержащий список последовательностей, каждая длиной 6 аминокислот.Как показано ниже:

QDFRGETW
AQAVRSSS
ANGVELRD

Я хотел бы преобразовать этот файл в:

QAN
DQN
FAG
RVV
GRE
....
WSD

с простым циклом for и циклом while.

Вот то, что я попробовал, это работает.

i2 = ''
with open('datafile','r') as f:
    for line in f:
       i2 += line[2]

То, что я хотел бы сделать, это перебрать индексы и добавить каждую новую строку в словарь.Поэтому я решил попробовать это.

Dict = {}
i = 0
seq = ''
with open ('datafile','r') as f:
    while i <= 7:
        for line in f:
            seq += line[i]
            Dict[i] = seq
        i += 1

Однако, когда я печатаю Словарь, он показывает только, например: {0:QAN} и ничего больше.Если я уменьшу отступ для Dict[i], теперь у него будут все ключи, но значения QAN вместо 1: DQN и т. Д. *

Странно, даже когда я ввожу этот код:

seq = ''
i = 0
with open ('datafile','r') as f:
    while i <= 7:
        for line in f:
            seq += line[i]
        i += 1
    print seq

Если также возвращает QAN, а не WSD, как я и ожидал.Следовательно, существует проблема с циклом while.Есть мысли?

1 Ответ

2 голосов
/ 04 июня 2019

Код ниже должен работать.input_file.txt - файл, содержащий текст.Я думаю, первая строка в ожидаемом выводе должна быть QAA.

for line in zip(*open('input_file.txt').readlines()):
    print(''.join(line))

Вывод:

QAA
DQN
FAG
RVV
GRE
ESL
TSR
WSD
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...