Python中同时从两行中提取信息

2024-03-29 10:21:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件,其中有几行SAMfields,包含不同制表符分隔字段中的信息和DNA序列。每一行都是唯一的样本,但是每两行都是耦合的(成对的),所以我想同时从两行中提取信息。你知道吗

虽然我可以很容易地从这些字段中逐行提取信息,但我希望有一种同时分析这两行的方法。有没有一个循环(或者一行一行地操作循环)来完成这个任务?你知道吗


Tags: 文件方法信息序列制表符dna样本samfields
3条回答

你可以用itertools做你想做的事想要更多特别是izip。我想它会对你有好处,因为它对记忆友好,而且你可以挖掘DNA数据。你知道吗

import itertools

with open(file) as f:
   for l,j in itertools.izip(f,f):
       print l,j

您可以用所有奇数行压缩所有偶数行。所以,你可以做:

with open(myFile) as inputFile:
    for sequence in zip(inputFile[::2], inputFile[1::2]):
        print(sequence)  # prints lines 0,1 then lines 2,3 etc.

更灵活的方法是使用发电机:

def line_pairs(file):
    file_iter = iter(file)
    while True:
        line1 = next(file_iter)
        line2 = next(file_iter)
        yield (line1, line2)

for line1, line2 in line_pairs(file):
    # do what you want with line1 and line2 available at the same time

现在,如果您意识到需要特别处理某些行(例如,带空白行),您可以修改生成器。你知道吗

相关问题 更多 >