he recientemente comenzó a usar Python/pyparsing para procesar una cadena de valores hexadecimales y tengo problemas con esto: Considere esta cadena:Uso token como variable en pyparsing
string = "10020304059917368584304025326"
Quiero final resultado ser la siguiente:
['10', '02', '03', ['04', '05', '9917365843'], ['04', '02', '5326']]
Suponga que 04 es una etiqueta que significa que los datos (el mismo concepto como en ASN.1), y 05 es el tamaño de los datos. No veo cómo usar la variable de tamaño en el código de pyparsing. Lo mejor que puedo hacer es:
byte = Word(hexnums, exact=2)
process = byte + byte + byte + Word(hexnums)
newstring = process.parseString(string)
print (newstring.dump())
Cualquier ayuda sería muy apreciada.
PS: Después de la ayuda de enganchado, mi código final es:
from pyparsing import *
string = "10 02 03 04 05 99 17 36 58 43 04 02 53 26"
tag = Word(hexnums, exact=2)
size = Word(hexnums)
array = Group(tag + countedArray(size))
process = tag + tag + tag + ZeroOrMore(array)
newstring = process.parseString(string)
print (newstring.dump())
que imprime:
['10', '02', '03', ['04', ['99', '17', '36', '58', '43']], ['04', ['53', '26']]]
Esperanza esto ayuda en el futuro.
Gracias, esto es exactamente lo que necesitaba. – Kiji