Невозможно удалить пробелы из строки с помощью pyparsing set_parse_action()Python

Программы на Python
Anonymous
Невозможно удалить пробелы из строки с помощью pyparsing set_parse_action()

Сообщение Anonymous »

У меня есть общий элемент «текстовый блок», для которого я скопировал код удаления пробелов из документации:

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

import pyparsing as pp

text_block = pp.Group(
pp.OneOrMore(
pp.SkipTo(pp.LineEnd()) + pp.LineEnd().suppress(),
stopOn=pp.StringEnd() | (pp.LineStart() + (pp.Literal("E)") | pp.Literal("F)")))
)
).set_parse_action(pp.token_map(str.strip))
К сожалению, это возвращает ошибку:

FAIL-EXCEPTION: TypeError: дескриптор «strip» для объектов «str»
не применяется к объекту «ParseResults»

Я заменил использование token_map функцией:

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

def _strip_whitespace(tokens):
return [token.str.strip() for token in tokens]

text_block = pp.Group(
pp.OneOrMore(
pp.SkipTo(pp.LineEnd()) + pp.LineEnd().suppress(),
stopOn=pp.StringEnd() | (pp.LineStart() + (pp.Literal("E)") | pp.Literal("F)")))
)
).set_parse_action(_strip_whitespace)
...но теперь он удаляет весь текст(!)

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

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