text = 'the text stuff <*to test*> to find a way to extract all text'\
'that is <*included in special tags*> less than star and greater'\
'than star'
J'ai essayé d'utiliser: Adding up re.finditer results.Tentative d'extraction de texte dans les balises <* mot mot mot *> n fois dans chaque ligne via Python
J'ai essayé plusieurs combinaisons d'importation regex. J'ai essayé des variantes de \w+
.
Je peux imprimer du texte avec '<* .... *>'
et remplacer '<*'
et '*>'
par des blancs à l'aide .replace
, mais je ne peux pas utiliser DictReader pour extraire uniquement les mots dans les balises, car les balises semblent être des caractères spéciaux en Python. En utilisant le DictReader, je tire toute la ligne de texte, mais pas seulement avec des mots dans les balises de caractères de contrôle.
.split
fonctionne sur le texte pour remplacer, mais pas pour trouver du texte dans une balise avec des caractères inhabituels tels que <*...*>
.
J'ai essayé d'échapper aux personnages <
, *
et >
comme dans \<|*.*?+\*\>
pour trouver tout le texte dans les balises ou marqueurs, mais cela ne fonctionne pas.
Python n'aime pas que ces caractères soient échappés.
J'ai pensé à les trouver dans des balises octales pour <
, *
et >
mais cela peut être une distorsion du fonctionnement de Python.
Nous avons trouvé de bons conseils tirés des livres de Wes McKinney et de Beazley/Jones sur Python.
Avoir testé le texte de début et de fin, mais ces caractères spéciaux ne se substituent pas bien. S'excuser d'avance pour la complexité des solutions essayées.
J'espère que je suis dans le stade pour l'approche.
importation et inscrivez-vous csv
csv.register_dialect('piper', delimiter = '|', quoting=csv.QUOTE_NONE)
utilisent un DictReader pour lire chaque ligne
with open('text') as csvfle: for row in csv.DictReader(csvfile, dialect='piper'): row["specialtext"] = row["text"].replace("<*", "").replace("*>", "").decode('windows-1252').encode('utf-8').strip() print row['specialtext']
tous ces travaux ci-dessus, mais toute tentative de trouver le texte dans la tags, n'a pas.
REGEX est mauvais à ce sujet. vous avez besoin d'un analyseur simple. –
@Chad S. ... des suggestions? – MethodyM
modgrammar est un .. mais il y a en fait [beaucoup de choix] (https://wiki.python.org/moin/LanguageParsing) –