Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Importar CSV Pero Cual Es El Caracter Separador ?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Importar CSV Pero Cual Es El Caracter Separador ? 
 
Hola a todos.
Hoy tenia que importar unos .csv para un programa que estoy haciendo de fichas de ayuda al turista y sucedía que unas veces los archivos estaban separados por comas, otras por punto y coma y otras por tabulador.
Así que decidí hacer una función para que ella solita se "apiole" de cual era el carácter en cuestión.
Public Function ChkSeparator(strPath As String) As Collection ''Dado un archivo de texto separado por comas, tabuladores etc. esta funcion analiza cual es el caracter separador. Para ello comprueba todos los caracteres ascii y para cada linea y si estan en todas la lineas luego los lista. una vez que se tiene el conjunto de caracteres que estan en todos los renglones se pasa a contar la ocurrencias de cada uno en cada linea y en cuanto algun caracter aparece diferente cantidad de veces en dos lineas distintas este se descarta.

    Dim str As String
    Dim stx As New String[]
    Dim c As Byte
    Dim n As Integer
    Dim i As Integer
    Dim col As New Collection

    stx = FileLoad(strPath)
    If stx.Count >= 10 Then
        n = 9
    Else
        n = stx.Max
    Endif

    For c = 0 To 64
        Select c
            Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57
                'skip
            Case Else
                col.Add(0, Chr(c))
                For i = 0 To n
                    If InStr(stx[i], Chr(c)) = 0 Then
                        col[Chr(c)] = Null
                        Break
                    Else
                        col[Chr(c)] = col[Chr(c)] + 1
                    Endif
                Next

        End Select
    Next
' Aca faltaria una verificación de misma cantidad de veces en todos los renglones
    Return col
End
 

Faltaria una verificación mas. en caso que sea un separador este caracter debera ocurrir la misma cantidad de veces en todos los renglones
Utiliza una función auxiliar que carga y depura el archivo CSV antes de pasarlo al procesado.
Public Function FileLoad(strPath As String, Optional bolBL As Boolean) As String[] ''Devuelve una matriz de texto donde cada ítem es un renglón del archivo de texto. Si el renglón esta vacio en el archivo de texto, es decir se trata de unallinea vacia, esta no se pasa a la martiz, por lo tanto el resultado es un retorno sin lineaas en blanco.

    Dim strList As String
    Dim stxListTmp As New String[]
    Dim stxList As New String[]
    Dim intList As Integer

    stxList.Clear

    If Exist(strPath) Then

        strList = File.Load(strPath)

        If InStr(strList, "\n") > -1 Then
            stxListTmp = Split(strList, "\n")
        Else
            If String.Len(strList) > 0 Then
                stxListTmp.Add(strList)
            Endif
        Endif

        For intList = 0 To stxListTmp.Max
            Select bolBL
                Case False
                    If stxListTmp[intList] <> "" Then
                        stxList.Add(stxListTmp[intList])
                    Endif
                Case Else
                    stxList.Add(stxListTmp[intList])
            End Select
        Next
    Endif

    Return stxList

End
 

Bueno el resultado es una lista de los posibles separadores. En todas las prueba que hice sale solo un carácter, pero podría suceder que salgan varios. Me interesa que le echen un vistazo para mejorarla.

 ¿Alguna función para contar las veces que un carácter dado aparece en una cadena de texto?
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Importar CSV Pero Cual Es El Caracter Separador ? 
 
Interesante. Le echaré un vistazo para incorporarlo a csv2sqlite. Creo que no es necesario leer todas las líneas, con, digamos, 10 o así es suficiente para determinar el separador utilizado.
Ya te cuento.

+1
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Importar CSV Pero Cual Es El Caracter Separador ? 
 
shordi escribió: [Ver mensaje]
...Creo que no es necesario leer todas las líneas, con, digamos, 10 o así es suficiente...

Correcto, de echo así lo hace, si te fijas en el código n nunca pasa de 10.
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Importar CSV Pero Cual Es El Caracter Separador ? 
 
tincho escribió: [Ver mensaje]
shordi escribió: [Ver mensaje]
...Creo que no es necesario leer todas las líneas, con, digamos, 10 o así es suficiente...

Correcto, de echo así lo hace, si te fijas en el código n nunca pasa de 10.
Saludos.


Yo tengo que mirarlo mas detenidamente por que todavía no me entero. Aunque en mi es normal. Gracias, tincho.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Importar CSV Pero Cual Es El Caracter Separador ? 
 
Esto puede ayudar: -

Test.tar.gz
Descripción:  
Descargar
Nombre del archivo: Test.tar.gz
Tamaño: 14.99 KB
Descargado: 50 veces
Test.tar.gz
Descripción:  
Descargar
Nombre del archivo: Test.tar.gz
Tamaño: 14.99 KB
Descargado: 50 veces
Test.tar.gz
Descripción:  
Descargar
Nombre del archivo: Test.tar.gz
Tamaño: 14.99 KB
Descargado: 50 veces

 



 
cogier - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Importar CSV Pero Cual Es El Caracter Separador ? 
 
Buen enfoque también, cogier.

 
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Importar CSV Pero Cual Es El Caracter Separador ? 
 
cogier escribió: [Ver mensaje]
Esto puede ayudar: -

Si, otro enfoque, siempre es bueno ver diferentes formas de abordar los problemas.
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Separador De Grupos Y/o Elementos En ListB... GambasLinux Controles/Librerías/Componentes 9 Lunes, 08 Marzo 2010, 10:39 Ver último mensaje
shordi
No hay nuevos mensajes Importar Componente En Gambas 3.5.2 cabustos General 1 Jueves, 10 Abril 2014, 17:24 Ver último mensaje
jsbsan
No hay nuevos mensajes Split, Más De Un Caracter Separador Shell General 23 Lunes, 08 Agosto 2016, 13:44 Ver último mensaje
Shell
No hay nuevos mensajes ¿Cual Es El Evento Donde Se Crea Y Carga ... gambafeliz Controles/Librerías/Componentes 7 Sabado, 21 Septiembre 2019, 16:00 Ver último mensaje
gambafeliz
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron