Пипарсинг — возвращение к основамPython

Программы на Python
Anonymous
Пипарсинг — возвращение к основам

Сообщение Anonymous »

Пытаясь собрать очень простой пример, чтобы проиллюстрировать проблему, с которой я столкнулся при анализе pyparsing, я обнаружил, что не могу заставить мой простой пример работать — этот пример едва ли сложнее, чем Hello, World!< /p>
Вот мой пример кода:

Код: Выделить всё

import pyparsing as pp
import textwrap as tw

text = (
"""
A) Red
B) Green
C) Blue
"""
)

a = pp.AtLineStart("A)") + pp.Word(pp.alphas)
b = pp.AtLineStart("B)") + pp.Word(pp.alphas)
c = pp.AtLineStart("C)") + pp.Word(pp.alphas)

grammar = a + b + c

grammar.run_tests(tw.dedent(text).strip())
Я ожидал, что он вернет ["A)", "Red", "B)", "Green", "C)", "Blue"], но вместо этого я получаю:

Код: Выделить всё

A) Red
A) Red
^
ParseException: not found at line start, found end of text  (at char 6), (line:1, col:7)
FAIL: not found at line start, found end of text  (at char 6), (line:1, col:7)

B) Green
B) Green
^
ParseException: Expected 'A)', found 'B'  (at char 0), (line:1, col:1)
FAIL: Expected 'A)', found 'B'  (at char 0), (line:1, col:1)

C) Blue
C) Blue
^
ParseException: Expected 'A)', found 'C'  (at char 0), (line:1, col:1)
FAIL: Expected 'A)', found 'C'  (at char 0), (line:1, col:1)
Почему он говорит, что нашел конец текста после первой строки??? Почему после первой строки ожидается A)???
(Примечание: textwrap.dedent() и Strip() не влияют на результаты этого скрипта.)

Подробнее здесь: https://stackoverflow.com/questions/786 ... -to-basics

Вернуться в «Python»