2014-01-31 45 views
2
myString = "Exon  51 100.0 1446231 1446281 NW_003101558.1  1 51 XM_002612573.1 Branchiostoma floridae hypothetical protein, mRNA" 
print myString.split('100.0')[1].split(" ")[2] 

这就是我卡住的地方。我想从第二个分组中得到两个数字(“1446231 1446281”),但我只得到第二个分组。如何从输入行和制表符分隔两个数字?

理想情况下,我希望“外显子1446231 1446281”作为输出 - 所有制表符分隔。感谢您的任何帮助。

回答

3

只需存储split()调用的结果,以便您可以访问所需的元素。

然后你就可以加入这些元素连同join()

>>> myString = "Exon  51 100.0 1446231 1446281 NW_003101558.1  1 51 
XM_002612573.1 Branchiostoma floridae hypothetical protein, mRNA" 
>>> s = myString.split() 
>>> print '\t'.join((s[0], s[3], s[4])) 
Exon 1446231 1446281 
>>> 

对于更复杂的情况下,单一的拆分可能是不足够的,但你会得到的想法。

+0

谢谢你,这是在这种情况下非常有用的。 – user3256536

0

由于它看起来像是具有可变数量的空白区域来分隔字符串的不同字段,因此请使用正则表达式来拆分字符串。

import re 
s = re.split('\s+', myString) 
print '\t'.join([s[0], s[3], s[4]]) 
0

在一行又一个解决方案:

>>> print '\t'.join([y for x,y in enumerate(myString.split()) if x in (0,3,4)]) 
Exon 1446231 1446281 
>>> 
相关问题