Я думаю, что я делаю ошибку в том, как я называю setResultsName()
:Python/Pyparsing: Трудности с setResultsName
from pyparsing import *
DEPT_CODE = Regex(r'[A-Z]{2,}').setResultsName("Dept Code")
COURSE_NUMBER = Regex(r'[0-9]{4}').setResultsName("Course Number")
COURSE_NUMBER.setParseAction(lambda s, l, toks : int(toks[0]))
course = DEPT_CODE + COURSE_NUMBER
course.setResultsName("course")
statement = course
От IDLE:
>>> myparser import *
>>> statement.parseString("CS 2110")
(['CS', 2110], {'Dept Code': [('CS', 0)], 'Course Number': [(2110, 1)]})
Выходной сигнал я надеюсь:
>>> myparser import *
>>> statement.parseString("CS 2110")
(['CS', 2110], {'Course': ['CS', 2110], 'Dept Code': [('CS', 0)], 'Course Number': [(2110, 1)]})
setResultsName()
работает только для терминалов?
Что делает 'repr()' do? –
Кроме того, похоже, что 'setResultsName()' возвращает копию, но 'setParseAction()' does not - почему непоследовательность? Или я ошибаюсь? –
@Rosarch: 'repr()' возвращает строковое представление объекта. Он часто дает более полное представление о данных внутри объекта, чем 'str()'. Я думаю, вы правы, что 'setParseAction' возвращает' self', а 'setResultName' возвращает копию. Я недостаточно осведомлен, чтобы объяснить, почему так. – unutbu