J'essaie de faire une petite application qui utilise pyparsing
pour extraire des données à partir de fichiers produits par un autre programme.Correspondance des lignes non vides avec pyparsing
Ces fichiers ont le format suivant.
SOME_KEYWORD:
line 1
line 2
line 3
line 4
ANOTHER_KEYWORD:
line a
line b
line c
Comment puis-je construire la grammaire qui vous aidera à extraire line 1
, line 2
... line 4
et line a
.. line c
? Je suis en train de faire une construction comme celui-ci
Grammar = Keyword("SOME_KEYWORD:").supress() + NonEmptyLines + EmptyLine.supress() +\
Keyword("ANOTHER_KEYWORD:").supress() + NonEmptyLines + EmptyLine.supress()
Mais je ne sais pas comment définir NonEmptyLines
et EmptyLine
. Merci.
+1, belle réponse. Cette application est plutôt orientée ligne, donc définir une expression LineEnd() est plus ou moins inévitable. Habituellement, lorsque vous faites cela, vous voulez aussi redéfinir l'ensemble par défaut des caractères d'espaces pour ne pas inclure '\ n', en utilisant:' ParserElement.setDefaultWhitespaceChars ("\ t") ', juste après l'importation de pyparsing. Ensuite, vous pourrez détecter 'LineEnd() * (2, None)' en tant que séparateur entre les groupes de mots-clés. – PaulMcG
Merci Paul! Cela a rendu la vie tellement plus facile! – user2662833