나는이 같은 문자열을 가지고 : 나는 확실히 아직 확보하지 못했더라도이 그것에 대해가는 나의 방법은,PyParsing : setParseAction()을 올바르게 사용하고 있습니까?
[("MSE", 2110), ("MSE", 3030), ("MSE", 4102)]
입니다 :
"MSE 2110, 3030, 4102"
내가 출력을 원하는
def makeCourseList(str, location, tokens):
print "before: %s" % tokens
for index, course_number in enumerate(tokens[1:]):
tokens[index + 1] = (tokens[0][0], course_number)
print "after: %s" % tokens
course = Group(DEPT_CODE + COURSE_NUMBER) # .setResultsName("Course")
course_data = (course + ZeroOrMore(Suppress(',') + COURSE_NUMBER)).setParseAction(makeCourseList)
이 출력 :
>>> course.parseString("CS 2110")
([(['CS', 2110], {})], {})
>>> course_data.parseString("CS 2110, 4301, 2123, 1110")
before: [['CS', 2110], 4301, 2123, 1110]
after: [['CS', 2110], ('CS', 4301), ('CS', 2123), ('CS', 1110)]
([(['CS', 2110], {}), ('CS', 4301), ('CS', 2123), ('CS', 1110)], {})
올바른 방법인가요, 아니면 완전히 해제할까요?
또한 출력이 정확하지 않습니다. course_data
은 같은 형식의 course
기호 목록을 내보내려고합니다. 지금은 첫 번째 코스가 다른 코스와 다릅니다. (다른 사람이하지 않는 반면, 그것은는 {}
있습니다.)
답변을 수락해야한다고 생각합니다. – Donovan