elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] - Script devuelva un cadena en forma de 'sms'
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] - Script devuelva un cadena en forma de 'sms'  (Leído 4,920 veces)
Pryato

Desconectado Desconectado

Mensajes: 3


Ver Perfil
[Python] - Script devuelva un cadena en forma de 'sms'
« en: 27 Octubre 2013, 02:58 am »

Buenas, tengo que hacer el siguiente script,:
 Se pide que diseñe un programa que lea un texto (sin acentos ni otros caracter caracteres que no sean letras) y lo vuelva a escribir en formato SMS. Por ejemplo, si el usuario del programa escribe:
Hola que tal por donde estas
Debería escribir:
ola que tl x donde estas
A tal efecto, considera los siguientes cambios a hacer sobre la cadena (en el orden indicado):

• En las palabras que empiezan por H, suprimir la h

• Las silabas "que" o "qui" cambiarlas por "que" o "ki".

• Las silabas "por" cambiarlas por "x".

• En los monosilabos de una sola vocal y como minimo 2 letras, suprimir la vocal. Considere que un
monosilabo es un término que solo tiene una vocal. Naturalmente las vocales de "que" o "ki" no se han de sustituir.

Hasta el momento lo he hecho todo, pero la ultima parte de suprimir la vocal en los monosilabos, no se como hacerlo. Tengo esto de momento:
Código
  1. import string
  2.  
  3. def sin_h(s):
  4.    if s[0] in 'Hh':
  5.        s1= s[1:]
  6.    else:
  7.        s1=''
  8.    s1=s1.replace(' H'," ")
  9.    s1=s1.replace(' h',' ')
  10.    rep_q(s1)
  11.  
  12. def rep_q(s):
  13.    s=s.replace('Que','que')
  14.    s=s.replace('que','que')
  15.    s=s.replace('Qui','ki')
  16.    s=s.replace('qui','ki')
  17.    rep_x(s)
  18.  
  19. def rep_x(t):
  20.    t=t.replace('Per','x')
  21.    t=t.replace('per','x')
  22.    sin_voc(t)
  23.  
  24. def sin_voc(s):
  25.    ...
  26.    ...
  27.  
  28.  
  29. txt=raw_input('Escribe un texto: ')
  30.  
  31. sin_h(txt)
  32.  

Como veis, me falta la ultima funcion de sin vocales, donde solo hay q eliminar la vocal de los monosilabos, no de todas las palabras... No se como hacerlo..

Si alguien me puede ayudar...

Gracias :)


En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.287

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Python] - Script devuelva un cadena en forma de 'sms'
« Respuesta #1 en: 27 Octubre 2013, 07:23 am »

hola:
lo más simple que se me ocurre es
1) pues básicamente deberías verificar el largo de cada palabra que forme el texto
2) si tiene dos carácteres buscar la posición de la vocal (0-1) y escribir la palabra con el otro carácter.ej: de e=1 print palabra[0] (por regla general la mayoria de las palabras a abreviar es la segunda letra.
 
3) si es de tres lo mismo o mejor aún sólo escribir el primer y último carácter.
ej: tal = print (palabra[0]+palabra[2] = tl
es obvio que la mayoría de los monosílabos la vocal es la intermedia.

espero que te oriente.


En línea

Pryato

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: [Python] - Script devuelva un cadena en forma de 'sms'
« Respuesta #2 en: 27 Octubre 2013, 13:15 pm »

Vale, y como voy verificando cada palabra?
En línea

Danyfirex


Desconectado Desconectado

Mensajes: 493


My Dear Mizuho


Ver Perfil
Re: [Python] - Script devuelva un cadena en forma de 'sms'
« Respuesta #3 en: 27 Octubre 2013, 17:01 pm »

Se me ocurrió algo masomenos así:


Código
  1. import re
  2. cadena="hola que tal soy del norte"
  3.  
  4. for palabra in cadena.split(" "):
  5. if len(palabra)==3:
  6.  l1=re.match("[^aeiou]", palabra[-1])
  7.  l2=re.match("[^aeiou]", palabra[0])
  8.  l3=re.match("[aeiou]", palabra[1])
  9.  if l1 and l2 and l3:
  10.     print (palabra)
  11.     print palabra[0]+palabra[-1]

Espero te sirva de ayuda. aunque no sea la forma mas eficiente. funciona para monosílabas de largo 3.

saludos
En línea

tincopasan


Desconectado Desconectado

Mensajes: 1.287

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Python] - Script devuelva un cadena en forma de 'sms'
« Respuesta #4 en: 27 Octubre 2013, 17:34 pm »

usé una creación de lista con la división de la cadena por el delimitador espacio
lista=mensaje.split(" ")
después trabajas como con cualquier lista.
En línea

0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: [Python] - Script devuelva un cadena en forma de 'sms'
« Respuesta #5 en: 28 Octubre 2013, 15:24 pm »

Yo haría lo siguiente y por favor corregir si estoy hablando algo nada que ver...

Teóricamente sería:
Código
  1. palabras = ["que", "hola", "saludos"]
  2. replaces = ["k", "ola", "salu2"]
  3. frase = "Hola que tal, dale saludos a tu familia!"
  4. for i, j in zip(palabras, replaces):
  5.    frase = frase.replace(i, j)
  6.  
Y haría los reemplazos pertinentes en pocas líneas, "que" -> k ; hola -> ola ; saludos -> salu2

Saludos Pythoneros ! :D
En línea

¡ SIGUEME EN TWITTER -> @JavierEsteban__ !
tincopasan


Desconectado Desconectado

Mensajes: 1.287

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Python] - Script devuelva un cadena en forma de 'sms'
« Respuesta #6 en: 28 Octubre 2013, 22:09 pm »

0x5d: no está mal en ese ejemplo pero... si la frase es otra?
solo reemplazarías esas tres palabras y el objetivo es cualquier palabra que cumpla esas determinadas condiciones! no reemplazas palabras que empiecen por h! solo hola, hablar u hoy quedan fuera en tu ejemplo. Rescato que si habría que reemplazar "dos" x 2 ejemplo: dormidos= dormi2
En línea

0x5d

Desconectado Desconectado

Mensajes: 241



Ver Perfil WWW
Re: [Python] - Script devuelva un cadena en forma de 'sms'
« Respuesta #7 en: 30 Octubre 2013, 07:27 am »

Ah pues no había entendido esa parte tuya ... Yo creo que nada más te queda usar "import re" y mediante las regex ir verificando e ir reemplazando según el caso...


Saludos!
En línea

¡ SIGUEME EN TWITTER -> @JavierEsteban__ !
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines