Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Número Máximo De Palabras Por Lineas En Un Archivo De Texto
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Número Máximo De Palabras Por Lineas En Un Archivo De Texto 
 
Hola!.

Podría valer por ejemplo, para conocer el número máximo de campos que puede tener en cada registro de un archivo de texto (csv)

Public Sub Main()  
  
  Dim cad, cad2 As String  
  Dim contar As Integer
  Dim linea As String  
  Dim alineas As New Integer[]
  
  linea = "vaca pollo \n perro gato gallina\n pato"
  
  For Each cad In Split(Trim(linea), "\n")
    For Each cad2 In Split(Trim(cad), " ")
      contar += 1      
    Next    
    alineas.Add(contar)
    contar = 0
  Next
  'Número máximo de palabras por linea en un archivo de texto
  Print alineas.Sort()[alineas.Max]
  
End
 


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número Máximo De Palabras Por Lineas En Un Archivo De Texto 
 
Shell:

Hay un comando de la terminal que lo hace mucho más rápido: wc

https://hablemoslinux.wordpress.com/2012/02/26/el-comando-wc/


Citar:
Para todo archivo procesado por el comando, se despliegan 4 columnas que índica el número de líneas, palabras y caracteres(en ese orden), además del nombre del archivo procesado. Además, si se procesan varios archivos, al final se muestra la cuenta total.Ejemplos:

Para un sólo archivo:

usuario@Linux:~$ wc /etc/passwd
38   57 1810 /etc/passwd


Para múltiples archivos:
usuario@Linux:~$ wc /etc/shells /etc/hosts
15  19 192 /etc/shells
 9  26 246 /etc/hosts
24  45 438 total



Fuente:
https://hablemoslinux.wordpress.com/2012/02/26/el-comando-wc/
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Jueves, 28 May 2015, 12:03; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número Máximo De Palabras Por Lineas En Un Archivo De Texto 
 
Julio:

No es exactamente el uso que normalmente  le he dado al comando wc.
Uso típico: Contar el número de lineas

list -l | wc -l
 


Creo que no es lo mismo. A lo mejor no lo entendido o no me he explicado mejor.
Esto toma cada linea. Cuenta de esa linea el número de palabras y almacena ese número.
Asi por ejemplo alineas[0] = 5, diría que la linea 1 tiene 5 palabras. Vale.
Luego una vez que ha contado cada palabra de cada linea, te muestra el número máximo de palabras "de la linea más larga".

Creo que no es lo mismo.¿ Qué opinas ?.  
Quizás deba retocar el tema del mensaje. (Esto de estar en varios sitios a la vez)
¿ A que si ?.

¡ Ay, que sería de nuestro administrador si no le diéramos faena !.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Jueves, 28 May 2015, 13:23; editado 2 veces 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número Máximo De Palabras Por Lineas En Un Archivo De Texto 
 
Creo que te estás metiendo en un berengenal importante, que se dice por mi pueblo.
Si tu archivo no tiene un formato csv, no puedes convertirlo en csv y de ahí en tabla sin volverlo totalmente inútil.
Me explico: Si las líneas no contienen los mismos datos, ¿En qué orden los pones?
Un ejemplo:
1,nombre,apellido1, apellido2,fecha,cantidad
2,nombre,apellido1,fecha,cantidad (es que es extranjero)
3,nombre, apellido1,apellido2,cantidad
etc.
No puedes, con una función estándar generar una tabla coherente. con eso.
Averiguar el número máximo de campos por línea no te ayuda, porque el orden de los campos no puede ser establecido más que añadiendo comas al final... cosa inútil por completo.

Si hablamos de un fichero concreto, pues tardas muuucho menos editándolo con el gedit y añadiendo y quitando a ojo las comas (o punto y coma). que necesites.
Si hablamos de ficheros desconocidos de antemano (es decir, no son csv y no sabemos qué contienen), debes tratar de alguna manera las líneas una a una, por ejemplo: todas aquellas que tengan campos de menos o de más, no se tratan; o todas las que tengan campos de menos se les añaden comas o si sin de más se ignoran y se cortan, etc. etc.

En ningún caso, con ficheros desconocidos puedes hacer la conversión a tabla sin perder o corromper información. Es lo que hay.
Hace unos años me pegué con el tema a fondo. La Junta de Calamidades de Castilla Mancha sólo facilita información en .pdf y cada vez con un layout distinto. Yo tenía que pasar los datos a nuestras bases de datos e hice un programa en gambas2 para ello. Era un programa engorroso, casi imposible de hacerlo entender por los usuarios y muy imperfecto. Finalmente se me encendió la bombilla y lo solucioné por otro lado, pero el convertir ficheros de texto de formato desconocido... casi imposible.

Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número Máximo De Palabras Por Lineas En Un Archivo De Texto 
 
Shordi:

Con toda sinceridad, lo que estoy viendo realmente es tu aplicación "siesta" y estoy con la función:

Public Function csv2sqlite(dbPath As String, dbName As String, tablename As String, elficherocsv As String, separador As String, comillas As String, tienecampos As Boolean) As Boolean
....
 


No me he puesto a ver la aplicación completamente, solo fui directo a tu función.
Y entre su código está esta linea dentro de un bucle:

For Each cad In lineas
      c = Max(comun.substrcount(cad, separador), c) 'c es el número máximo de campos de una de las filas
  Next
 


Junto a la función que llama: (Cosa que gambas muestra con tanta facilidad al usar su menú contextual)

Public Function subStrCount(cadena As String, subcadena As String) As Integer
' Devuelve el número de veces que aparece una subcadena dentro de otra
  Dim i, ret As Integer
  Repeat
      i = InStr(cadena, subcadena, i + Len(subcadena))
      If i > 0 Then
          ret += 1
      Endif
  Until i = 0
  Return ret
End
 


Como leí, " 'c es el número máximo de campos de una de las filas".."interprete" a mi manera algo que creí parecido.

Pd Ahora he entendido por que dices que tu estilo es caótico..
"caótico neutral". Es que es normal, el código es grande y es fácil perderse.

Hay muchos conceptos de bases de datos que se me escapan en la función.

Una cuestión, ¿ los registros a la hora de convertirlos no deben tener comillas a la hora de la conversión ?.
Tu eliminaste las comillas, cambiaste los separadores, hiciste una serie de pasos que no sabía que fueran
necesario para convertir un csv a una base de datos sqlite.

Y es que tengo otros ejemplos en los que los campos no tienen comillas, solo son textos o números,
separados por una coma con el correspondiente salto de linea. Pude haber creado el archivo csv sin comillas.  

Citar:

....
"3-D WORLD SOCCER","DEPORTES-FOOTBALL 3D","2","474-475"
"ABC-BOXING","DEPORTES-BOXEO","2","133-134"
"ACUATIC GAME","ARCADE","1","384"
....


Estoy intentando de entender un poco mejor como va este tema.

Creare otro post son el archivo con extensión sql. Son otras preguntas.
Muy interesante tu código, no quita que sea complejo la primera vez que se ve. Y más complejo si se hace agua en bases de datos.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número Máximo De Palabras Por Lineas En Un Archivo De Texto 
 
jajaja, ¡claro que es caótico! No son programas escritos para que, en principio, los viese nadie...y luego la pereza, la pereza... Si a esto le sumas que el siesta lo hice en gambas2 y luego lo "modernicé" de correprisas por las elecciones sindicales -que la gente tenía que sacar pegatinas para el mailing y demás "para ayer"- no te digo ná, el regalo envenenado...    

Sobre ésto:
Citar:
No me he puesto a ver la aplicación completamente, solo fui directo a tu función.
Y entre su código está esta linea dentro de un bucle:

creo recordar (no tengo en esta aparato el código del siesta), que lo que se buscaba era que no sobrasen ni faltasen comas en la primera línea, porque en tal caso sqlite creaba la tabla y la dejaba vacía sin decir ni mú... pero, como te decía más arriba, no se consigue importar la tabla sin corromper la información de la base de datos (campos cambiados, etc.)

Citar:
Una cuestión, ¿ los registros a la hora de convertirlos no deben tener comillas a la hora de la conversión ?.
Tu eliminaste las comillas, cambiaste los separadores, hiciste una serie de pasos que no sabía que fueran
necesario para convertir un csv a una base de datos sqlite.

Como estándar, los campos entre comillas son de texto y sin comillas numéricos. La función la creé así... antes de saber que Sqlite todo lo trata como texto y "daba igual". Siendo el propósito del programa la impresión, pues... sinceramente no recuerdo qué hice (en mi torpe memoria creía que lo había "anulado" por sistema de hacer ocultos los controles...)
Ya que estás de depurador de esa parte de la conversión del sql y si te apetece, siéntete libre de mejorarlo, es un código muy viejo y caótico, te quedaré agradecido.
 




===================
No podemos regresar
 
última edición por shordi el Jueves, 28 May 2015, 19:05; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número Máximo De Palabras Por Lineas En Un Archivo De Texto 
 
jeje, gracias por las lecciones, Jorge.

Estoy empezando a entender bases de datos, imagina lo verde que sigo estando (siempre en base de datos).
Los ejemplos que estudio o practico me hacen volver a la temática de bases de datos. Siempre está ahí
en la mayoría de las aplicaciones de gestión de datos. Y es fundamental saber usarlas.

¿ Sigues programando en el mismo estilo ?.
¿ Es el basic caótico ?  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Número Máximo De Palabras Por Lineas En Un Archivo De Texto 
 
Citar:
¿ Sigues programando en el mismo estilo ?.


Básicamente sí... pero no. O sea... yo qué sé

Citar:
¿Es el basic caótico?
  
Noo, no me quites méritos, el caos es mi ámbito natural. Ya quisiera el Basic ese...      
 




===================
No podemos regresar
 
shordi - 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 Archivo De Texto Encriptado jcontasti Bases de Datos 1 Martes, 22 Junio 2010, 18:41 Ver último mensaje
Emmet
No hay nuevos mensajes Mysql Y Archivo De Texto Plano jhonnshark General 3 Martes, 04 Octobre 2011, 16:03 Ver último mensaje
jguardon
No hay nuevos mensajes Texto Y Un Número, Seguir La Serie Sher852 General 3 Viernes, 01 Marzo 2013, 17:52 Ver último mensaje
shordi
No hay nuevos mensajes Buscar Un Archivo Que Contenga Un Texto Shell Mundo Linux 0 Martes, 05 Febrero 2019, 15:24 Ver último mensaje
Shell
 

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