Santiago, miembro de nuestro equipo de trabajo, nos ha hecho el favor de crear este tutorial porque controla a la perfección dicho tema.
Solución:
Comience convirtiendo el texto en una lista de listas. Eso se encargará de la parte de análisis:
lol = list(csv.reader(open('text.txt', 'rb'), delimiter='t'))
El resto se puede hacer con búsquedas indexadas:
d = dict()
key = lol[6][0] # cell A7
value = lol[6][3] # cell D7
d[key] = value # add the entry to the dictionary
...
Aunque no hay nada de malo con las otras soluciones presentadas, puede simplificar y escalar en gran medida sus soluciones utilizando la excelente biblioteca pandas de python.
Pandas es una biblioteca para manejar datos en Python, preferida por muchos científicos de datos.
Pandas tiene una interfaz CSV simplificada para leer y analizar archivos, que se puede usar para devolver una lista de diccionarios, cada uno con una sola línea del archivo. los keys serán los nombres de las columnas, y los valores serán los de cada celda.
En tu caso:
import pandas
def create_dictionary(filename):
my_data = pandas.DataFrame.from_csv(filename, sep='t', index_col=False)
# Here you can delete the dataframe columns you don't want!
del my_data['B']
del my_data['D']
# ...
# Now you transform the DataFrame to a list of dictionaries
list_of_dicts = [item for item in my_data.T.to_dict().values()]
return list_of_dicts
# Usage:
x = create_dictionary("myfile.csv")
Si el archivo es grande, es posible que no desee cargarlo por completo en la memoria de una sola vez. Este enfoque evita eso. (Por supuesto, hacer un dict a partir de él aún podría consumir algo de RAM, pero se garantiza que será más pequeño que el archivo original).
my_dict =
for i, line in enumerate(file):
if (i - 8) % 7:
continue
k, v = line.split("t")[:3:2]
my_dict[k] = v
Editar: no estoy seguro de dónde obtuve extend
desde antes. me refería update
valoraciones y comentarios
Si estás de acuerdo, eres capaz de dejar un tutorial acerca de qué te ha gustado de esta sección.