tengo un archivo generado con miles de líneas como la siguiente:¿Cómo crear un diccionario a partir de una línea de texto?
CODE,XXX,DATE,20101201,TIME,070400,CONDITION_CODES,LTXT,PRICE,999.0000,QUANTITY,100,TSN,1510000001
Algunas líneas tienen más campos y otros tienen menos, pero todos siguen el mismo patrón de pares de valores clave y cada línea tiene una Campo TSN
Al hacer un análisis sobre el archivo, escribí un bucle como el siguiente para leer el archivo en un diccionario:
#!/usr/bin/env python
from sys import argv
records = {}
for line in open(argv[1]):
fields = line.strip().split(',')
record = dict(zip(fields[::2], fields[1::2]))
records[record['TSN']] = record
print 'Found %d records in the file.' % len(records)
... que está muy bien y hace exactamente lo que yo quiero que (la print
es solo un ejemplo trivial).
Sin embargo, no se siente particularmente "Pythonic" para mí y la línea con: (¿cuántas veces no es iterar sobre los campos)
dict(zip(fields[::2], fields[1::2]))
cual sólo se siente "torpe".
¿Hay una forma mejor de hacerlo en Python 2.6 con solo los módulos estándar a mano?
Creo que esto es tan pitónico como puede ser. –
¿Solo le interesan los registros de TSN? ¿O tiene la intención de expandir esto a todos los tipos de registros? – marcog