2013-10-01 3 views
1

Так что есть строка str = 'yadayada; borg and ; 12for;scion$march.car; endКак вернуть часть строки

Ключевой персонаж Я ищу это $ так, как я возвращаю часть строки scion$march.car

Я использовал string.find(str,'$') найти индекс $ в строке.

ответ

5

Использование str.split и next:

>>> s = 'yadayada; borg and ; 12for;scion$march.car; end' 
>>> next((x for x in s.split(';') if '$' in x), None) #return None if no match was gound 
'scion$march.car' 

Объяснение:

s.split(';') разбивает строку на ';' и возвращает список, теперь мы перебрать этот список и возвращает первый элемент, который содержит '$':

>>> s.split(';') 
['yadayada', ' borg and ', ' 12for', 'scion$march.car', ' end'] 

Приведенный выше код примерно эквивалентно:

def solve(strs): 
    for s in strs.split(';'): 
     if '$' in s: 
      return s 
...   
>>> solve(s) 
'scion$march.car' 
+1

Если вы не знакомы со следующим, более подробный оператор может быть 'для каждого части в s.split (';'): if '$' в eachpart: print eachpart' – gregb212

0

split(), как указано выше, вероятно, является чистым способом. Но вы также можете сделать это с find() и rfind() ниже

i = s.find('$') 
m = s[s.rfind(';', 0, i)+1:s.find(';',i)] 
print m 

По сути вы найти первый ';' после '$', первый ';' перед ним, и извлечь подстроку между ними.

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