首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历相同长度行的文件的每个字符串的索引,同时从各个索引生成每个值的新字符串

遍历相同长度行的文件的每个字符串的索引,同时从各个索引生成每个值的新字符串
EN

Stack Overflow用户
提问于 2019-06-04 13:12:03
回答 1查看 28关注 0票数 1

我有一个数据文件,其中包含一个序列列表,每个序列有6个氨基酸。如下所示:

代码语言:javascript
复制
QDFRGETW
AQAVRSSS
ANGVELRD

我想基本上将这个文件转换为:

代码语言:javascript
复制
QAN
DQN
FAG
RVV
GRE
....
WSD

使用简单的for循环和while循环。

以下是我尝试过的有效方法。

代码语言:javascript
复制
i2 = ''
with open('datafile','r') as f:
    for line in f:
       i2 += line[2]

我要做的是遍历索引,并将每个新字符串添加到字典中。所以我决定试试这个。

代码语言:javascript
复制
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等…

奇怪的是,即使我输入以下代码:

代码语言:javascript
复制
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循环存在问题。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2019-06-04 13:23:05

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

代码语言:javascript
复制
for line in zip(*open('input_file.txt').readlines()):
    print(''.join(line))

输出:

代码语言:javascript
复制
QAA
DQN
FAG
RVV
GRE
ESL
TSR
WSD
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56437684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档