Bueno, estoy tratando de leer un archivo CSV con Typescript
Este es mi código:
export default class Playlist{ public playlistId: Number = 0; public playlistName: string = ''; constructor(line:string){ const item = line.split(',') this.playlistId = +item[0]; this.playlistName = item[1]; } } fs.readFile('.\\csv\\playlist.csv', 'utf8',(err, res) => { if(err){ console.error('YEET'); return; }else{ const playlists = res.split('\n').slice(1).map((x:string) => new Playlist(x)) console.log(playlists) } })Estos son los datos CSV:
"1","Music" "2","Movies" "3","TV Shows" "4","Audiobooks"Este es el objeto de la lista de reproducción que obtengo:
Playlist { playlistId: NaN, playlistName: '"Music"\r' },Como puede ver para el ID de la lista de reproducción, obtengo NaN, pero no tengo idea de por qué, porque lo analizo en un número correctamente. Además, no es necesario que el nombre de la lista de reproducción también esté en un formato extraño.
Es porque tiene marcas de voz envueltas alrededor de cada valor. Arregle la clase Playlist con lo siguiente:
export default class Playlist { public playlistId: Number = 0; public playlistName: string = ""; constructor(line: string) { const item = line.split(/"|\\r/).join("").split(","); this.playlistId = Number(item[0]); // or keep as =+ item[0] this.playlistName = item[1]; } }O elimine las comillas del archivo CSV.
1,Music 2,Movies 3,TV Shows 4,AudiobooksSi ve que su nombre de lista de reproducción, incluye un par extra de comillas dobles '"Music"\r' .
Antes de analizar item[0] , también debería verse como '"1"' y se espera que +'"2"' sea NaN cuando analice eso.
Una solución fácil sería simplemente reemplazar todas las comillas con caracteres vacíos, cambiando efectivamente el análisis a +item[0].replace(/\"/g, "")
no pones ; después de cada valor? ¿Sólo es una pregunta?