遍历具有相同长度的行的文件的每个字符串的索引,同时根据单独的索引创建每个值的新字符串

时间:2019-06-04 05:12:03

标签: python loops for-loop while-loop

我有一个数据文件,其中包含一个序列列表,每个序列长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 个答案:

答案 0 :(得分:2)

下面的代码应该可以工作。 input_file.txt是包含文本的文件。我认为,预期输出的第一行必须为QAA

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

输出:

QAA
DQN
FAG
RVV
GRE
ESL
TSR
WSD