Discussion:
Ficheros CSV y campos con comas
(demasiado antiguo para responder)
Tximis
2003-08-11 16:33:47 UTC
Permalink
Tengo un fichero CSV generado con el administrador de servicios de
Windows 2000, quiero convertir estos datos en una pagina HTML. Pero hay un
problema detro de los valores separados por las comas, hay texto, y este
texto muchas veces contiene comas, por lo que no puedo parsear
correctamente el fichero.

No permite cambiar el caracter delimitador de palabras por lo que no
puedo hacer nada; he encontrado un opcion que creo que me valdra, y es
exportar los datos en formato "Delimitado por tabuladores", luego seria
parsear el fichero buscando los tabuladores (0x09h).

¿Hay alguna forma de parsear ficheros CSV que contengan campos que
contengan el caracter delimitador?

--
Tximis
Fernando Arbeiza
2003-08-11 22:27:28 UTC
Permalink
Hola:

On Mon, 11 Aug 2003 16:33:47 +0000 (UTC), Tximis
Post by Tximis
¿Hay alguna forma de parsear ficheros CSV que contengan campos que
contengan el caracter delimitador?
Sí, ignora las comas que aparezcan dentro de los campos.

La verdad es que no sé que tiene que ver esto con el C. Si lo estás
haciendo en este lenguaje, publica el código que te está dando problemas
e intentaremos ayudarte.

Un saludo.
--
Fernando Arbeiza <URL: mailto:***@ono.com>
Crea tu propio Linux: <URL: http://www.escomposlinux.org/lfs-es>
Tximis
2003-08-13 17:06:41 UTC
Permalink
Post by Fernando Arbeiza
Post by Tximis
¿Hay alguna forma de parsear ficheros CSV que contengan campos que
contengan el caracter delimitador?
Sí, ignora las comas que aparezcan dentro de los campos.
No puedo ignorar las comas, por que es precisamente en lo que me tengo
que basar para separar los campos, creo que no me has entendido. Estoy
parseando un fichero CSV (Comma Separated Value, valores separados por
comas):

campo1, campo2, campo3, campo4
campo5, campo6, campo7, campo8

Pero resulta que esos campos a su vez contienen el caracter
delimitador, es decir tienen el caracter ",", por lo que no puedo
parsearlos correctamente. Lo que preguntaba es si es posible hacerlo,
aunque a priori parece imposible. Imaginate que lo que tengo es algo asi:

campo1, c,a,mpo2, campo3, campo4
...

Al parsear la primera linea y llegar al segundo valor el programa no
funcionaria. El problema tiene facil solucion si pudiera utilizar un
caracter delimitador que yo quisiera, por ejemplo lo cambiaria por un
"|" y todo solucionado, pero el programa no lo permite cambiar..
Post by Fernando Arbeiza
La verdad es que no sé que tiene que ver esto con el C. Si lo estás
haciendo en este lenguaje, publica el código que te está dando problemas
e intentaremos ayudarte.
No es algo especifico de C, pero lo estoy haciendo en C, dentro de
poco mando lo que tengo hecho hasta la fecha.
Post by Fernando Arbeiza
Un saludo.
--
Tximis
Martin J. Sanchez
2003-08-14 10:44:26 UTC
Permalink
On Mon, 11 Aug 2003 16:33:47 +0000 (UTC), Tximis
Post by Tximis
...
¿Hay alguna forma de parsear ficheros CSV que contengan campos que
contengan el caracter delimitador?
En general no. El delimitador deberia ser unico e identificable. Por
ello, al exportar como CSV, las aplicaciones suelen permitir cambiar
el caracter delimitador.

Si el delimitador puede aparecer como caracter en un texto dentro de
un unico campo, podrias deducir cual es el texto real tenieno en
cuenta el numero de campos.

Por ejemplo, dado el formato:
<nombre>,<edad>,<peso>

Es evidente que cualquier coma, antes de las dos ultimas,
pertenecerian al texto de <nombre>

Un saludo,
Martin.

Loading...