Я пытаюсь разобрать предложение, как 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)
И вроде работает, но это сбрасывает символы в кодировке Юникод (и что бы то ни было в алфавитах), и я думаю, что я хотел бы иметь value
как целое предложение, а не так: 'value': [(([u'Lote', u'Numero', u'1', ',', u'Marcelo', u'T', u'de', u'Alvear', u'500'], {}), 1)
.
Это простой способ решить эту проблему?