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

时间:2016-12-05 12:46:48

标签: python loops

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

虽然我可以逐行轻松地从这些字段中提取信息,但我希望能够同时分析这两行。是否有循环(或逐行操纵循环的方法)来完成这项工作?

3 个答案:

答案 0 :(得分:3)

你可以使用itertools做你想做的事。更具体地说izip。我认为它会对你有益,因为它对你的记忆友好,你可以挖掘DNA数据。

import itertools

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

答案 1 :(得分:0)

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

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.

答案 2 :(得分:0)

更灵活的方法是使用生成器:

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

现在,如果您意识到需要专门处理某些线条(例如剥离空白线条),您只需修改生成器即可。