Я пытаюсь разобрать предложение типа Base: Lote Numero 1, Marcelo T de Alvear 500. Demanda: otras palabras.
. Я хочу: сначала разделить текст по точкам, а затем использовать все, что стоит перед двоеточием, как label
для предложения после двоеточия. Прямо сейчас у меня есть следующее определение:
from pyparsing import *
unicode_printables = u''.join(unichr(c) for c in xrange(65536)
if not unichr(c).isspace())
def parse_test(text):
label = Word(alphas)+Suppress(':')
value = OneOrMore(Word(unicode_printables)|Literal(','))
group = Group(label.setResultsName('label')+value.setResultsName('value'))
exp = delimitedList(
group,
delim='.'
)
return exp.parseString(text)
И вроде как работает, но отбрасывает символы Unicode (и все, что не в буквенных обозначениях), и я думаю, что хотел бы иметь value
в целом предложение, а не это: 'value': [(([u'Lote', u'Numero', u'1', ',', u'Marcelo', u'T', u'de', u'Alvear', u'500'], {}), 1)
.
Есть простой способ решить эту проблему?
Word(alphanums)
вы бы позвонилиWord(unicodePrintables)
- person Ehtesh Choudhury   schedule 06.10.2011