2013-02-13 26 views
0

如果我有一個字符串對於低於UPPER的字符串。 UPPER開始時給位置。 Python的

ex = 'aaatttgggatgaATG' 

,我想要找的索引,這是小寫結束

所以在這種情況下,將

indx_lower = 13 

我怎麼才能到該值?

我必須做一個for循環,我檢查了字符串中每個元素的布爾值嗎?

是什麼?

total_indx = range(0,len(ex)) 

for p,k in zip(ex,total_indx): 
    if upper print k ? 

亞我不知道我該怎麼做。 。 。

+0

最後一個小寫字母是指數12.記住他們從0開始 – 2013-02-13 22:20:11

+0

也許這個問題的答案將幫助您http://stackoverflow.com/questions/8204712/find-index-number-of-大寫字符在字符串 – UnLiMiTeD 2013-02-13 22:23:44

回答

2

最好的辦法是不要用一個for循環:

>>> print re.search("[A-Z]", "aaatttgggatgaATG").start() 
13 

re.search()返回MatchObject對象,你可以問哪裏它首先調用它的方法start()。 (但如果沒有匹配,re.search()將返回None)。

3
next(i for i,j in enumerate(ex) if j.isupper()) - 1 
1

您可以使用重新

import re 

ex = 'aaatttgggatgaATG' 

print ex.index(re.search('[A-Z]', ex).group()) 
+0

到底是什麼? – 2013-02-13 22:21:48

+0

對不起,這是字符串,但我把它改爲'ex' – jackcogdill 2013-02-13 22:22:37

0
for x in range(0, len(ex)): 
    if ex[x].isupper(): 
     print x 
     break 
+0

'enumerate'比這裏的'range'更具慣用。 – 2013-02-13 22:22:53

0
>>> import re 
>>> ex = 'aaatttgggatgaATG' 
>>> re.search("[A-Z]", ex).start() 
13