Mmkay, хорошо вот решение генератора, которое, кажется, работает хорошо для меня. Вы также можете предоставить различные теги открытия и закрытия, если хотите.
def get_tags(s, open_delim ='{{',
close_delim ='}}' ):
while True:
# Search for the next two delimiters in the source text
start = s.find(open_delim)
end = s.find(close_delim)
# We found a non-empty match
if -1 < start < end:
# Skip the length of the open delimiter
start += len(open_delim)
# Spit out the tag
yield s[start:end].strip()
# Truncate string to start from last match
s = s[end+len(close_delim):]
else:
return
Запустите ваш целевой ввод следующим образом:
# prints: today, runner_up, blabla, oooo
for tag in get_tags(html):
print tag
Редактировать: это также работает против вашего нового примера :). В моем, очевидно, быстром тестировании, он, похоже, также обрабатывал некорректно сформированные теги, хотя я не даю никаких гарантий его надежности!