获取python中最后两列的长度

获取python中最后两列的长度,python,python-2.7,bioinformatics,Python,Python 2.7,Bioinformatics,我试图只从给定的表中获取内部值,我应该编写一个for循环,但是我对python非常陌生,我被卡住了。这不是打印的长度 gi|564120226|gb|AHB72725.1| TMHMM2.0 inside 1 6 gi|564120226|gb|AHB72725.1| TMHMM2.0 TMhelix 7 29 gi|564120226|gb|AHB72725.1| TMHMM2.0 outs

我试图只从给定的表中获取内部值,我应该编写一个for循环,但是我对python非常陌生,我被卡住了。这不是打印的长度

gi|564120226|gb|AHB72725.1|     TMHMM2.0       inside        1     6

gi|564120226|gb|AHB72725.1|     TMHMM2.0       TMhelix       7    29

gi|564120226|gb|AHB72725.1|     TMHMM2.0       outside      30    86

gi|564120226|gb|AHB72725.1|     TMHMM2.0       TMhelix      87   109

gi|564120226|gb|AHB72725.1|     TMHMM2.0       inside      110   121

gi|564120226|gb|AHB72725.1|     TMHMM2.0       TMhelix     122   144

gi|564120226|gb|AHB72725.1|     TMHMM2.0       outside     145   158

gi|564120226|gb|AHB72725.1|     TMHMM2.0       TMhelix     159   178

gi|564120226|gb|AHB72725.1|     TMHMM2.0       inside      179   198

gi|564120226|gb|AHB72725.1|     TMHMM2.0       TMhelix     199   221

gi|564120226|gb|AHB72725.1|     TMHMM2.0       outside     222   244

gi|564120226|gb|AHB72725.1|     TMHMM2.0       TMhelix     245   267

gi|564120226|gb|AHB72725.1|     TMHMM2.0       inside      268   286

gi|564120226|gb|AHB72725.1|     TMHMM2.0       TMhelix     287   309

gi|564120226|gb|AHB72725.1|     TMHMM2.0       outside     310   328

gi|564120226|gb|AHB72725.1|     TMHMM2.0       TMhelix     329   351

gi|564120226|gb|AHB72725.1|     TMHMM2.0       inside      352   374

    lin = process.stdout.readlines()

    for line in lin:
        if line.startswith('gi|564120226|gb|AHB72725.1| TMHMM2.0 inside'):

            trimed_line = lin.strip()
            elements = trimed_line.split(' ') 
            last_second, last_one = elements[-2], elements[-1]

            # use len() to check the length 
            len_of_last_second_column = len(last_second)
            len_of_last_column = len(last_one)

#       print len_of_last_second_column 
            print len_of_last_column
它没有给出输出长度

您可以使用csv:

import csv
with open (fn) as csv_txt:
    for row in csv.reader(csv_txt, delimiter='|', skipinitialspace=True):
        print row
印刷品:

['gi', '564120226', 'gb', 'AHB72725.1', 'TMHMM2.0 inside 1 6']
['gi', '564120226', 'gb', 'AHB72725.1', 'TMHMM2.0 TMhelix 7 29']
['gi', '564120226', 'gb', 'AHB72725.1', 'TMHMM2.0 outside 30 86']
['gi', '564120226', 'gb', 'AHB72725.1', 'TMHMM2.0 TMhelix 87 109']
['gi', '564120226', 'gb', 'AHB72725.1', 'TMHMM2.0 inside 110 121']
['gi', '564120226', 'gb', 'AHB72725.1', 'TMHMM2.0 TMhelix 122 144']
['gi', '564120226', 'gb', 'AHB72725.1', 'TMHMM2.0 outside 145 158']
....
然后只需计算相关元素的长度。

差=0 对于lin中的行:

if line.startswith('gi|564120226|gb|AHB72725.1| TMHMM2.0    inside'):

    elements = line.split('\t')

    last_second, last_one = elements[-2], elements[-1]
    last_one= last_one.split()      
    diff=int(last_one[1])-int(last_one[0])
    print "diff", diff      
    difference=diff+difference+1
print "total inside length", difference

这是我想出的答案,它奏效了,谢谢大家帮助我。

请告诉我们您的困境。到目前为止,您编写的代码是什么?到底是什么不起作用?你有错误吗?如果有,是哪一个?输出是否不是您所期望的?如果是,输出是什么。您的数据是在文件中还是其他文件中?你能给我们一些代码或者更多的细节吗?我必须使用一个工具来获取我写的输出,从中我必须获取“内部”、“外部”或“TMhelix”的信息。我必须运行for循环来搜索内部长度,我不知道如何运行for循环。例如,我如何获得最后两列并将其相加。我已经附加了代码,请查看。对于您的测试用例来说太具体了,与问题的“通用标题”不匹配。