User Tag List

Resultados 1 al 4 de 4

Tema: Programadores de pytones, os necesito

  1. #1
    Tetris Champion! Donkey Kong Champion! Mario Tetris Champion! Bubbles Champion! Equilibrium Champion!
    Fecha de ingreso
    Nov 2007
    Mensajes
    861
    Mencionado
    4 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    6
    Agradecer Thanks Received 
    4
    Thanked in
    Agradecido 4 veces en [ARG:2 UNDEFINED] posts

    Programadores de pytones, os necesito

    Tras mes y pico de aprender Python por mi cuenta ha llegado el momento inevitable de preguntar algo que no soy capaz de encontrar por las redes

    El caso es que tengo una función muy sencilla que busca las veces que una palabra aparece en distintos textos y devuelve una string con el porcentaje de la palabra en cada texto.

    Código:
        def porciento(palabra):
    
                textos=[text1,text2,text3,text4,text5,text6,text7,text8,text9]
                resultado=' - '
    
                for i in textos:
                       casos=i.count(palabra)
                       totalpalabras=len(i)
                       resultado=resultado + str(100 * casos / totalpalabras) + ' - '
    
                       return resultado
    El problema es que quiero poder utilizar esta función con diferentes librerías que pueden contener cientos de textos, todos nombrados como text1,text2...textn. Mi idea es hacer un loop en el cual sólo tenga que cambiar un número (el número de textos en la librería) y que él solo me cree una lista bajo la variable 'textos'.

    Algo así, pero que devuelva una llamada a una variable en vez de una string:

    Código:
             textos=[]
    
             for i in numerodetextos:
                      textos.append('text'+str(i))
                      return textos

  2. #2

    Fecha de ingreso
    Jun 2006
    Mensajes
    4,574
    Mencionado
    41 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    1,259
    Agradecer Thanks Received 
    700
    Thanked in
    Agradecido 427 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    6
    Primero de todo, matizar que de Python no he hecho más que las pequeñas prácticas que hice en el ciclo formativo y ya no recuerdo casi nada de ese lenguaje.

    Si no he entendido mal, tú quieres hacer algo como esto no?

    Código:
    textos=[]
    
    for x in range(1, numeroDeArchivos):
        textos.append('text'+str(x))
    ¿O lo que quieres es evitar lo de tener que concatenar la cadena 'text' y el número? Por si era esto a lo que te referías, he encontrado este hilo en stackoverflow: http://stackoverflow.com/questions/6...mber-in-python
    Última edición por akualung; 11/08/2014 a las 00:38
    _
    .▲ ALABADO SEA EL TRI-FORCEPS!

    Nunca me he considerado de clase media. Soy más bien de clase calcetín roñoso.

  3. #3

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,357
    Mencionado
    93 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    374
    Agradecer Thanks Received 
    1,801
    Thanked in
    Agradecido 951 veces en [ARG:2 UNDEFINED] posts
    Vale, he tenido que leer unas 10 veces hasta que lo he entendido

    Tú quieres algo como esto:

    Código:
    textos = [texto1, texto2, texto3]
    Donde texto1, texto2, texto3 son variables, pero tu código genera algo como esto:

    Código:
    textos = ["texto1", "texto2", "texto3"]
    Bueno, puedes transformar un array en el otro con este comando:

    Código:
    mylocals = locals()
    textos = map(lambda i: mylocals[i], textos)
    Ejemplo:
    Código:
    In [13]: texto1=5
    
    In [14]: texto2=3
    
    In [15]: textos=['texto1', 'texto2']
    
    In [16]: print textos
    ['texto1', 'texto2']
    
    In [17]: mylocals=locals()
    
    In [18]: textos=map(lambda i: mylocals[i], textos)
    
    In [19]: print textos
    [5, 3]
    De hecho tu función probablemente "debería" ser así:

    Código:
             textos=[]
    
             for i in numerodetextos:
                      textos.append(locals()['text'+str(i)])
                      return textos
    Fíjate que no metemos en la lista textos la cadena 'text'+stri(i), sino que vamos a las variables locales (locals()) y metemos en textos el valor de la variable local llamada 'text'+str(i)

    Pero lo que quieres hacer es tan jodidamente raro que yo lo catalogo como error de diseño, y tendrías que escribir tu programa de una forma diferente. Por ejemplo: ¿para qué necesitas tener las variables texto1, texto2, texto3... como variables en vez de estar ya dentro de la lista textos?
    Última edición por juanvvc; 11/08/2014 a las 01:07
    "Todo es absolutamente falso, salvo alguna cosa"

  4. #4
    Tetris Champion! Donkey Kong Champion! Mario Tetris Champion! Bubbles Champion! Equilibrium Champion!
    Fecha de ingreso
    Nov 2007
    Mensajes
    861
    Mencionado
    4 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    6
    Agradecer Thanks Received 
    4
    Thanked in
    Agradecido 4 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por juanvvc Ver mensaje
    Vale, he tenido que leer unas 10 veces hasta que lo he entendido

    Tú quieres algo como esto:

    Código:
    textos = [texto1, texto2, texto3]
    Donde texto1, texto2, texto3 son variables, pero tu código genera algo como esto:

    Código:
    textos = ["texto1", "texto2", "texto3"]
    Eso es, la claridad no es lo mio Mañana lo probaré pero creo que tu solución es perfecta, gracias.


    Cita Iniciado por juanvvc Ver mensaje
    Pero lo que quieres hacer es tan jodidamente raro que yo lo catalogo como error de diseño
    Probablemente, llevo pocos meses programando. El caso es que las variables textn contienen libros completos (novelas y cosas asi) y vienen de una libreria específica (nltk).
    Última edición por peavy; 11/08/2014 a las 04:17

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •