Як витягти список підрядків на основі деяких шаблонів у python?
наприклад,
str = "this {{is}} a sample {{text}}".
очікуваний результат: список пітона, який містить "є" і "текст"
Відповіді:
14 за відповідь № 1>>> import re
>>> re.findall("{{(.*?)}}", "this {{is}} a sample {{text}}")
["is", "text"]
2 для відповіді № 2
Припускаючи, що "деякі шаблони" означають "окремі слова між двома {}" s ":
імпортувати повторно
re.findall ("{{(w *)}}", рядок)
Редагувати: відповідь Ендрю Кларка реалізує "будь-яку послідовність символів між двома {}" s "
2 для відповіді № 3
Ви можете використовувати наступне:
res = re.findall("{{([^{}]*)}}", a)
print "a python list which contains %s and %s" % (res[0], res[1])
Підбадьорює
1 для відповіді № 4
Рішення, засноване на регулярному виразі, добре для вашого прикладу, хоча я б рекомендував щось більш надійне для більш складного введення.
import re
def match_substrings(s):
return re.findall(r"{{([^}]*)}}", s)
Регістр зсередини:
[^}]
відповідає всім, що не є ""
([^}]*)
збігається з будь-якою кількістю не-} символів і групує їх
{{([^}]*)}}
ставить вищевказані подвійні дужки
Без дужок вище, re.findall
поверне весь матч (тобто ["{{is}}", "{{text}}"]
. Однак, коли регулярний вираз містить групу, findall буде використовувати його замість.
0 для відповіді № 5
Ви можете використовувати регулярний вираз, щоб відповідати всім, що відбувається між ними {{
і }}
. Чи буде це працювати для вас?
Взагалі кажучи, для позначення певних рядків у великому тексті, a дерево суфіксів буде корисним.