获取python中最后两列的长度
我试图只从给定的表中获取内部值,我应该编写一个for循环,但是我对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
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循环。例如,我如何获得最后两列并将其相加。我已经附加了代码,请查看。对于您的测试用例来说太具体了,与问题的“通用标题”不匹配。