/ / Python - extraindo uma lista de sub strings - python, regex

Python - extraindo uma lista de sub strings - python, regex

Como extrair uma lista de subcordas baseadas em alguns padrões em python?

por exemplo,

str = "this {{is}} a sample {{text}}".

resultado esperado: uma lista python que contém "é" e "texto"

Respostas:

14 para resposta № 1
>>> import re
>>> re.findall("{{(.*?)}}", "this {{is}} a sample {{text}}")
["is", "text"]

2 para resposta № 2

Assumindo "alguns padrões" significa "palavras simples entre o dobro {}" s ":

import re

re.findall ("{{(w *)}}", string)

Edit: resposta de Andrew Clark implementa "qualquer seqüência de caracteres em tudo entre double {}" s "


2 para resposta № 3

Você pode usar o seguinte:

res = re.findall("{{([^{}]*)}}", a)
print "a python list which contains %s and %s" % (res[0], res[1])

Felicidades


1 para resposta № 4

Uma solução baseada em regex é adequada para o seu exemplo, embora eu recomende algo mais robusto para uma entrada mais complicada.

import re

def match_substrings(s):
return re.findall(r"{{([^}]*)}}", s)

O regex de dentro para fora:

[^}] corresponde a qualquer coisa que "não seja"}
([^}]*) corresponde a qualquer número de caracteres não} e agrupa-os
{{([^}]*)}} coloca o acima dentro de chaves duplas

Sem os parênteses acima, re.findall retornaria toda a correspondência (ou seja, ["{{is}}", "{{text}}"]. No entanto, quando o regex contém um grupo, o findall irá usá-lo.


0 para a resposta № 5

Você pode usar uma expressão regular para corresponder a qualquer coisa que ocorra entre {{ e }}. Será que isso funciona para você?

De um modo geral, para marcar certas strings em um grande corpo de texto, um árvore de sufixo será útil.