2013-02-13 1 views
0

Если у меня есть строкаДля струны с более низким, чем ВЕРХНИЙ. Дайте позицию, когда начинается 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 ? 

ya Я не знаю, как это сделать. , ,

+0

Последнее строчная буква с индексом 12. Помните, что они начинаются с 0 –

+0

Может быть, ответ на этот вопрос поможет вам http://stackoverflow.com/questions/8204712/find-index-number-of- uppercase-character-in-a-string – UnLiMiTeD

ответ

2

Лучший способ не использовать для цикла:

>>> 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

что такое 's' в конце? –

+0

извините, что это была строка, но я изменил ее на 'ex' – jackcogdill

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

'enumerate' будет более идиоматичным, чем' range' здесь. –

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

 Смежные вопросы

  • Нет связанных вопросов^_^