#python #pyparsing
#python #pyparsing
Вопрос:
grammar = Literal("from") Literal(":") Word(alphas)
Грамматика должна отклонять from : mary
и только принимать from:mary
, т.е. без каких-либо пробелов чередования. Как я могу обеспечить это в pyparsing? Спасибо
Ответ №1:
Можете ли вы использовать Combine
?
grammar = Combine(Literal("from") Literal(":") Word(alphas))
Итак, тогда:
ОТРЕДАКТИРУЙТЕ в ответ на ваш комментарий.
Действительно?
>>> grammar = pyparsing.Combine(Literal("from") Literal(":") Word(pyparsing.alphas))
>>> grammar.parseString('from : mary')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/pymodules/python2.6/pyparsing.py", line 1076, in parseString
raise exc
pyparsing.ParseException: Expected ":" (at char 4), (line:1, col:5)
>>> grammar.parseString('from:mary')
(['from:mary'], {})
Комментарии:
1.
Combine
не выдаетParseException
forfrom : mary
. Я хочу, чтобы была выдана ошибка.2. Также ознакомьтесь с
leaveWhitespace
методом подавления пропусков пробелов для определенных выражений. Вызовите этот метод для любого выражения, которое должно совпадать без пропусков пробелов, в вашем случае ‘:’ и слова, содержащего имя.