Gabriel Genellina wrote:
Peter Otten escribió:
bsneddon wrote:
I am going to read a text file that is an export from a control
system.
It has lines with information like

base=1 name="first one" color=blue

I would like to put this info into a dictionary for processing.
import shlex
s = 'base=1 name="first one" color=blue equal="alpha=beta" empty'
dict(t.partition("=")[::2] for t in shlex.split(s))
{'color': 'blue', 'base': '1', 'name': 'first one', 'empty': '', 'equal':
'alpha=beta'}

Brilliant!

The thing I appreciated about Peter's solution was learning a purpose for .partition() as I've always just used .split(), so I would have done something like

>>> dict('=' in s and s.split('=', 1) or (s, '') for s in shlex.split(s)) {'color': 'blue', 'base': '1', 'name': 'first one', 'empty': '', 'equal': 'alpha=beta'}

Using .partition() makes that a lot cleaner. However, it looks like .partition() was added in 2.5, so for my code stuck in 2.4 deployments, I'll stick with the uglier .split()

-tkc


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to