Так что есть строка str = 'yadayada; borg and ; 12for;scion$march.car; end
Как вернуть часть строки
Ключевой персонаж Я ищу это $
так, как я возвращаю часть строки scion$march.car
Я использовал string.find(str,'$')
найти индекс $
в строке.
Так что есть строка str = 'yadayada; borg and ; 12for;scion$march.car; end
Как вернуть часть строки
Ключевой персонаж Я ищу это $
так, как я возвращаю часть строки scion$march.car
Я использовал string.find(str,'$')
найти индекс $
в строке.
Использование 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'
split()
, как указано выше, вероятно, является чистым способом. Но вы также можете сделать это с find()
и rfind()
ниже
i = s.find('$')
m = s[s.rfind(';', 0, i)+1:s.find(';',i)]
print m
По сути вы найти первый ';'
после '$'
, первый ';'
перед ним, и извлечь подстроку между ними.
Если вы не знакомы со следующим, более подробный оператор может быть 'для каждого части в s.split (';'): if '$' в eachpart: print eachpart' – gregb212