Recentemente ho iniziato ad usare python/pyparsing per elaborare una serie di valori esadecimali e sto avendo problemi con questo: Considerate questa stringa:Usa token come variabile nel pyparsing
string = "10020304059917368584304025326"
voglio la fine risultano essere questo:
['10', '02', '03', ['04', '05', '9917365843'], ['04', '02', '5326']]
si supponga che 04 è un tag, che significa che i dati (stesso concetto in ASN.1), e 05 è la dimensione di tali dati. Non vedo come utilizzare la variabile dimensione sul codice di pyparsing. Il meglio che posso fare è:
byte = Word(hexnums, exact=2)
process = byte + byte + byte + Word(hexnums)
newstring = process.parseString(string)
print (newstring.dump())
Qualsiasi aiuto sarebbe molto apprezzato.
PS: Dopo l'aiuto di Hooked, il mio codice finale è:
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())
che stampa:
['10', '02', '03', ['04', ['99', '17', '36', '58', '43']], ['04', ['53', '26']]]
Spero che questo aiuti in futuro.
Grazie, questo è esattamente ciò di cui avevo bisogno. – Kiji