Parseo de CSV
Los valores separados por comas son uno de los formatos de intercambio de datos más comunes. Nyx facilita su parseo: divide el texto en líneas con .split("\n"), y luego divide cada línea en campos con .split(","). El import std/csv ofrece utilidades adicionales para campos entre comillas y casos especiales.
Código
// 18: CSV parsing — split lines and fields manually
import "std/csv"
fn main() -> int {
let data: String = "name,age,city\nAlice,30,NYC\nBob,25,LA\nCharlie,35,SF"
let rows: Array = data.split("\n")
// Skip header, print each row parsed
var i: int = 1
while i < rows.length() {
let row: String = rows[i]
let fields: Array = row.split(",")
let name: String = fields[0]
let age: String = fields[1]
let city: String = fields[2]
print(name + " is " + age + " from " + city)
i = i + 1
}
return 0
}
Salida
Alice is 30 from NYC Bob is 25 from LA Charlie is 35 from SF
Explicación
.split(delimiter) es un método incorporado de String que divide una cadena en cada ocurrencia del delimitador dado y devuelve un Array de String. Dividir por "\n" da un elemento por cada fila del CSV; dividir cada fila por "," da un elemento por cada campo.
El bucle comienza en el índice 1 para saltar la fila de encabezado. Este es un patrón habitual en archivos CSV donde la primera línea contiene los nombres de columna en lugar de datos. Si necesitas procesar el encabezado (por ejemplo, para construir un mapa de nombre de columna a índice), deberías leer rows[0] por separado antes del bucle.
Este enfoque funciona bien para CSV simples sin campos entre comillas. Para CSV de producción que pueda contener comas dentro de cadenas entre comillas o saltos de línea dentro de campos, usa el parser completo de std/csv, que maneja correctamente las reglas de comillas de RFC 4180.
Source: examples/by-example/18-csv.nx