Problema al leer desde un archivo de texto utilizando CSV.
Estoy trabajando en un proyecto y estoy atascado porque cuando intenté leer del archivo “nrwolek, nrwolbiz, nrwolpr” en lugar de obtener [1E, 2E, 3E, 4E, 5E], [1B,2B,3B,4B,5B], [1P, 2P, 3P], obtuve nrwolek = 1E, nrwolbiz = 2E, nrwolpr u 3E. Parece que no lee una lista completa, sino solo elementos de ella. ¿Hay un método para corregir esto? ¿O es una buena solución resolver esto con JSON? Código de lectura:
import csv
from lot import DatabaseofLoty, Lot
def read_from_csv(path):
loty = []
with open(path,"r") as file_handle:
reader = csv.DictReader(file_handle)
for row in reader:
numer_lotu = row["numer_lotu"]
id_samolotu = row["id_samolotu"]
czas_lotu = row['czas_lotu']
trasa = row['trasa']
wolne_miejscaek = row['wolne_miejscaek']
wolne_miejscabiz = row['wolne_miejscabiz']
wolne_miejscapr = row['wolne_miejscapr']
bramka = row['bramka']
cenaek = row['cenaek']
cenabiz = row['cenabiz']
cenapr = row['cenapr']
nrwolek = row['nrwolek']
nrwolbiz = row['nrwolbiz']
nrwolpr = row['nrwolpr']
lot = Lot(numer_lotu, id_samolotu, czas_lotu, trasa,
wolne_miejscaek,
wolne_miejscabiz, wolne_miejscapr, bramka,
cenaek, cenabiz, cenapr)
loty.append(lot)
database = DatabaseofLoty(loty)
return database
print(read_from_csv("loty.txt"))
Archivo de texto:
numer_lotu,id_samolotu,czas_lotu,trasa,wolne_miejscaek,wolne_miejscabiz,wolne_miejscapr,bramka,cenaek,cenabiz,cenapr,nrwolek,nrwolbiz,nrwolpr
1,3,3:52,Amsterdam-Berlin,129,92,192,8,52,68,75, [1E, 2E, 3E, 4E, 5E], [1B,2B,3B,4B,5B], [1P, 2P, 3P]
2,3,3:52,Tokio-Berlin,129,92,192,8,580,720,1234
davy.ai
Parece que el problema está en el formato de los datos en las columnas “nrwolek”, “nrwolbiz” y “nrwolpr” del archivo CSV. Parece que los datos en estas columnas son listas, pero no se están leyendo como listas cuando se lee el archivo CSV.
Una posible solución a este problema es utilizar el formato JSON en lugar de CSV para almacenar los datos. JSON es un formato de intercambio de datos ligero que es fácil de leer y escribir en Python. Con JSON, puedes almacenar y leer fácilmente objetos de lista.
Para convertir los datos de CSV a JSON, puedes utilizar los módulos
csv
yjson
en Python. Aquí tienes un ejemplo de código:En este código, estamos utilizando la función
json.loads()
para convertir la cadena de datos en las columnas “nrwolek”, “nrwolbiz” y “nrwolpr” en listas de Python reales.Una vez que hayas convertido los datos al formato JSON, puedes leer y escribir fácilmente los datos en un archivo utilizando el módulo
json
.Alternativamente, si quieres seguir utilizando el formato CSV, puedes modificar el código para dividir la cadena de datos en las columnas “nrwolek”, “nrwolbiz” y “nrwolpr” en una lista utilizando la función
split()
. Aquí tienes un ejemplo de código:En este código, utilizamos la función
strip()
para eliminar los corchetes cuadrados de la cadena de datos, y luego utilizamos la funciónsplit()
para dividir la cadena en una lista.