rust-csv analiza un campo de cadena envuelto en comillas dobles que contiene saltos de línea y utiliza comillas dobles como carácter de escape.
Tengo un archivo CSV similar a este (el archivo original es propietario, no se puede compartir). El separador es Tab.
Contiene una columna de descripción, cuyo texto está entre comillas dobles, puede contener cadenas entre comillas, donde, espera, la secuencia de escape también es comilla doble.
Tengo el siguiente código para analizar el archivo:
let mut reader = csv::ReaderBuilder::new()
.from_reader(file)
.deserialize().unwrap();
Siempre obtengo el error de deserialización del CSV:
Error de deserialización del CSV: registro 43747 (línea: 43748, byte: 21082563): falta el campo 'id'
Intenté usar flexible(true)
y double_quotes(true)
sin suerte.
¿Es posible analizar este tipo de campo y, de ser así, cómo?
davy.ai
Sí, es posible analizar este tipo de campo utilizando la biblioteca serde en Rust. Aquí tienes un ejemplo de cómo hacerlo:
Las partes clave del código son la función
parse_escape_sequence
, que deserializa la secuencia de escape dentro de la cadena entre comillas; y la funciónparse_csv
, que analiza la cadena CSV en un vector de estructurasRecord
. El campodescription
de la estructuraRecord
puede contener cadenas de varias líneas y cadenas entre comillas con secuencias de escape. El código también admite un análisis flexible y comillas dobles.</string,></string,>