Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

124
Vistas
Análisis de archivo CSV con datos no normalizados y delimitador sobrecargado en NodeJS

Mi objetivo es analizar un conjunto de datos CSV con datos no normalizados en algunas filas que están encerradas entre "". No puedo dividirlo por ";" porque este carácter también se usa dentro de los datos.

Me pregunto, si hay una manera fácil de resolver esto!?

Algunas filas contienen datos no normalizados en la columna "goes_to", otras en la columna "comes_from" como esta (ver fila 'John' y 'David'). Estos datos utilizan el ";" delimitador que crea problemas.

 Name;goes_to;comes_from Peter;;London Ruth;Boston; Brandon;; John;;"Bern;Madrid;Tel Aviv" David;"New York;Paris;Berlin";

Eventualmente, el objetivo es normalizar los datos y colocarlos en dos estructuras multimapa separadas, de modo que pueda acceder a esos datos individualmente.

 comes_from_multimap.get('John'); >>> ['Bern', 'Madrid'] goes_to_multimap.get('David') >>> ['New York','Paris','Bern']

Utilizo un líder de línea, leo el CSV línea por línea y logro extraer la cadena entre paréntesis como el siguiente código, para decidir si esta línea necesita normalización. Si la fila contiene datos no normalizados, usaría un bucle. Aunque con mi enfoque estoy perdiendo la información, si proviene de la columna "goes_to" o "comes_from" porque mi código solo me da el texto entre dos paréntesis sin el contexto de donde proviene.

 nonNormalizedSubString = line.substring(line.indexOf("\"") + 1, line.lastIndexOf("\""));
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

prueba csv-parser

conjunto ; como delimitador, obtendrá una serie de resultados, por lo que puede usar la posición del elemento para determinar a qué columna pertenece y crear el conjunto de datos que necesita:

 const csvParse = require('csv-parse') const data = `Name;goes_to;comes_from Peter;;London Ruth;Boston; Brandon;; John;;"Bern;Madrid;Tel Aviv" David;"New York;Paris;Berlin";` const records = csvParse.parse(data, { delimiter: ';', trim: true }, (err, records) => { console.log(records); });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda