[Python-Dev] Extending struct.unpack to produce nested tuples

Matthew F. Barnes mfb at lotusland.dyndns.org
Sat Nov 22 18:27:24 EST 2003

I posted this to c.l.py the other day but didn't get any replies, so I
thought I might see how it fares on python-dev.  It's just an idea I had
earlier this week.  I'll attempt a patch if the response is positive.


I was wondering if there would be any interest in extending the
struct.unpack format notation to be able to express groups of data
with parenthesis.

For example:

>>> data = struct.pack('iiii', 1, 2, 3, 4)
>>> struct.unpack('i(ii)i', data)  # Note the parentheses
(1, (2, 3), 4)

Use Case:  I have a program written in C that contains a bunch of
aggregate data structures (arrays of structs, structs containing
arrays, etc.) and I'm transmitting these structures over a socket
connection to a Python program that then unpacks the data using the
struct module.  Problem is that I have to unpack the incoming data as
a flat sequence of data elements, and then repartition the sequence
into nested sequences to better reflect how the data is structured in
the C program.  It would be more convenient to express these groupings
as I'm unpacking the raw data.

I'm sure there are plenty of other use cases for such a feature.

Matthew Barnes

More information about the Python-Dev mailing list