Resultados 1 al 7 de 7

Tema: Suprimir parte del texto y elegir la linea a leer

  1. #1
    Fecha de ingreso
    Jun 2011
    Mensajes
    36

    Blender Suprimir parte del texto y elegir la linea a leer

    Lo consegui, (mirar esta pregunta para entender de que va la cosa: http://www.foro3d.com/archive/index.php/t-108867.html[LINK]http://www.foro3d.com/archive/index.php/t-108867.html[/LINK]).

    He conseguido hacer leer a Python 2 el texto html de una página web y mostrarme una sola línea.

    Por desgracia ocurre lo siguiente:
    1 - En el script tengo un montón de readlines. Tantas como para llegar hasta la línea 278 del HTML.
    2 - Al llegar a la línea 279 (por ejemplo) coge la línea completa.
    1er problema:
    Me gustaría poder simplificar mucho el script y para eso supongo (o al menos espero) que haya un comando o una extensión del comando readline() que me deje seleccionar directamente la línea a leer.

    De todas formas, eso no creo que me vaya a servir de mucho puesto que al estar utilizando un servicio de páginas web gratuitas supongo que, la línea donde se encuentra el dato que quiero cambia cada día.
    2º problema:
    Me encuentro en todo un problema en este caso. Una vez cogida la línea me la le completa. Incluida una parte que es algo, así como </div> y tal vez algo más. Me gustaría saber cómo quitar la parte </div>". Como resta no me deja porque se trata de un str".

    Posible solución:
    Leyendo Python para todos (un PDF al que le tenía mucho miedo) he encontrado la forma de leer todo el html de una web. Pero esto me lleva a los dos problemas anteriormente mecionados.

    También encontré una parte que, según lo que yo he entendido, hace una búsqueda completa y solo le la parte que se encuentra en la primera concidencia, hasta la segunda coincidencia.

    Creo que era este el comando: L.index(value[, start[, estop]).
    ¿Podrías indicarme algún ejemplo?
    ¿Pero cómo lo uso? ¿Me servirá para solucionar mis dos problemas en un solo comando? He ahí las cuestiones.

    De antemano gracias por la respuesta y agradecería qué quien responda se surcriba a este tema. Es posible que la respuesta no me sirva del todo y por supuesto no me gustaría abrir otro tema para volver a preguntar lo mismo.

  2. #2
    Fecha de ingreso
    Jul 2011
    Mensajes
    20

    Suprimir parte del texto y elegir la linea a leer

    Has abierto ya tres hilos no? Cuatro? Ya no se ni en cual contestarte.

    Bueno yo te dije que mejor lo aprendieses por tu cuenta porque si te escrivo el código sin más y solo haces copiar pegar dentro de dos semanas te veré preguntado de nuevo algo que ya te he dicho antes. Aun así, te lo explico, me suscrivo al hilo y si tienes dudas pregunta aquí.

    Antes que nada, aunque dices que no tienes tiempo, es muy importante que actualizes a una versión de Blender con Python 3, a poder ser la última, porque se incluyen muchas mejoras y muchos nuevos scripts no te van a funcionar en Python 2. Por ejemplo, la librería de Python 3 para interacion con webs es completamente distinta a la de Python 2. Yo te lo voy a explicar con Python 3, que es el que uso, si no quieres complicarte actualiza, sino tendrás que buscar las funciones que pondré para Python 2.

    La última vez te di este código: versión = float(urllib, urlopen(http://www.lawebdeljuego.com/act, versión)).

    Ahora te dejo todo entero y tasteado, con mi web para ello:
    Código:
    .
    #Definimos la función que nos va a servir para sacar el HTML, le pasamos como parámetro la URL.
    
    Def ExtraerHTML(URL):
    From urllib import request.
    #importa solo la clase request dentro de la librería urllib.
    Web = request, urlopen(URL) #Crea un objecto de tipo Web, con la URL que le hemos pasado.
    
    Código = Web, read(), decode(iso-8859-1).
    #Gurda el archivo de la web (codigo fuente) en la variable Texto.
    #También lo decodifica en el estándar iso-8859-1, el estándar a eleguir depende del archivo.
    Web, close() #Cierra la conexión con el servidor dónde está alojada la web.
    #print(Codigo).
    # Esto imprimiria en pantalla el código fuente.
    
    Return Código #Retorna el código fuente ya decodificado como una variable string.
    #Esta función recorta lo que este entre los dos parámetros dados (St1 y St2), todo lo demás lo elimina.
    
    Def Exclude(text, St1, St2):
    A = text, find(St1) #Retorna la posición de la primera coincidencia con St1.
    
    B = text, find(St2, a) #Igual que la anterior, pero empieza a buscar a partir de la posición de a.
    #return text[a:b] #Retorna el fragmento comprendido entre St1 y St2, pero sin eliminar St1.
    
    Return text[a+len(St1):b] #Retorna solo el fragmento deseado.
    #La función len() cuenta el número de caracteres de una cadena (string). O de cualquier otro tipo de dato.
    #Se usa [ y ] para seleccionar un elemento de una matriz o cadena, el : indica qué se van a retornar todos los elementos.
    #comprendidos entre esos indices.
    
    CFuente = ExtraerHTML(http://www.bubbleracer.xtrweb.com/) #Ejecuta la función para sacar el HTML y guarda el resultado en CFuente.
    #print(CFuente) #Imprime el Código Fuente, que está guardado en CFuente.
    
    Cabecera = Exclude(CFuente, <title>, </title>) #Retorna solo la cabecera de la web.
    
    Print(Cabecera).
    .

    Está todo comentado. Como ves lo que hago es crear dos funciones, una para leer todo el contenido de la web, y la otra para recortar solo que me interese. De este modo en dos líneas de código puedo hacer eso para las webs que quiera. Si crees que es demasiado código descomentalo y ya verás cómo se reduce. Lo que yo haría en tu caso, como esas funciones son muy generales las pondría en un archivo aparte, por ejemplo, general, py y luego las llamaría desde mi escript así:
    Include general.

    CFuente = general. ExtraerHTML(http://www.bubbleracer.xtrweb.com/).

    Cabecera = general. Exclude(CFuente, <title>, </title>). Saludos.

  3. #3
    Fecha de ingreso
    Jul 2011
    Mensajes
    20

    Suprimir parte del texto y elegir la linea a leer

    Ahora bien, aunque todo este código te sirve para lo que tú preguntas, el planteamiento esta mal. Si lo que quieres es que el juego mire si hay una nueva versión, si eso lo tiene que buscar dentro de un código HTML inmenso tardará un rato en descargar todo el HTML, si este es mucho. Y además si mucha gente hace eso a la web puedes colapsar el servidor. Mucho mejor poner los datos que quieres un archivo único y colgarlo a la web en un directorio aparte. Por ejemplo, tener algo, así como: http://www.miweb.com/actualizar, txt.

    O.
    http://www.miweb.com/act/actualizar, txt.

    En donde. http://www.miweb.com/act/files/.

    En cuya carpeta haya todos los archivos a actualizar. También si en lugar de txt pones otra extensión mola más. Por ejemplo: http://www.miweb.com/act/act, versión.

    Y etc. Te queda mucho camino, pero bueno ya que estoy te ayudo, hago un actualizar, py y para mí próximo juego solo tendré que implementar.

  4. #4
    Fecha de ingreso
    Jun 2011
    Mensajes
    36

    Thumbs up Suprimir parte del texto y elegir la linea a leer

    Gracias por tu aplisima respuesta.

    Realmente había tirado la toalla con esta pregunta por que después de tres días nadie me respondía.

    Me agrada ver qué hay gente dispuesta a ayudar cuando alguien lo necesita.

    De nuevo gracias por la respuesta.

    Pero como ya dije utilizaré un sitio web gratuito para esto y no puedo cargar archivos en la página.

    Encontré hace poco la solución definitiva. Una web donde el código no vria en absoluto, a no ser que yo lo haga. Y junto a eso el método readline hasta la línea qué yo quiero.

    Después solo hay dos posibilidades:
    - tienes la versión actualizada.
    - no tienes la versión actualizada.

    Entonces comparo la línea de la web con la línea qué viene incluida en el juego y si no son iguales es que no tienes la última versión dado que soy yo quien siempre tendrá la última.

    Es decir el código quedará algo así:
    #### leo la web.
    (no me sé el comando).
    #### alcanzo la línea deseada.
    (a base de readlines).
    #### leo la línea deseada.
    (con el comando readline).

    A = línea leida en la web (por ejemplo: Versión 1.2).

    B = línea qué viene con el juego (por ejemplo: Versión 2.4).

    C = texto que se mostrara en la pantalla de juego.

    If not a = b:
    C = Existe una nueva versión.

    Por supuesto tendré que tener en cuenta que en b tengo que añadir el típico </div> que me estorbaba antes.

    Pero lo dicho. Gracias por la respuesta y ya me estoy planteando pasarlo a la última versión de Blender porque me parecen demasiadas dificultades para algo tan simple como lo que pretendo hacer.

    Y me agrada ver qué mi duda te puede servir en el futuro. Espero jugar a tus juegos. Un saludo y mil gracias más.

  5. #5
    Fecha de ingreso
    Jul 2011
    Mensajes
    20

    Suprimir parte del texto y elegir la linea a leer

    Haber, varias cosas. Primero que nada, te felicito que hayas decidido pasar a la última versión. Yo empecé a aprender Blender en la 2.49b y cuando pase a la nueva fue difícil al principio acostumbrar-se, pero una vez te acostumbras la nueva es realmente impresionante. Personalmente yo diría que desde en este último año Blender se ha convertido en el mejor software 3D que puedas encontrar (Mejor que 3DMax, Autodesk Maya, etc).

    Después, muy importante que te quede claro. Si no tienes una web donde puedas poner tus archivos y descargarlos no puedes hacer un juego que se actualice solo. Mírate los hosting gratis y los programas FTP, en este aspecto te recomiendo FileZilla.

    Ahora. Hagas lo que hagas, el código que te di no funciona contando caracteres ni seleccionando líneas, no usa la función readline. Míratelo bien, le los comentarios y lo veras, que lo que hace es buscar dos palabras clave en todo el código y coge lo que haya dentro. Entonces puedes poner tú mismo las palabras clave y así no canvia. Por ejemplo, puedes hacer: PalabraClave1 Actualización 0.1 PalabraClave2, y la duncion Exclude seria: Versión = Exclude(CFuente, PalabraClave1, PalabraClave2).

    Bueno, espero haberte aclarado algo. No te salgas del camino del Jedi. Saludos.

  6. #6
    Fecha de ingreso
    Jun 2011
    Mensajes
    36

    Thumbs up Suprimir parte del texto y elegir la linea a leer

    Según lo que he llegado a entender, para utilizar filezilla es necesaria la conexión constante a Internet.

    Yo no tengo Internet en casa como para estar conectado todo el día. Tengo el Internet de 1EUR el día de carrefour.

    Esa opción no me serviría.

    De todas formas, estaba buscando que cuando el usuario clickara en el texto de actualización, se cerrara el juego y se abriera mi web en su navegador con la página de descarga de la versión actual.

    Después de descargarlo, obviamente, el usuario tiene que instalarlo. (este sistema no es tan automático como esperaba, pero servirá para empezar).

    Me gustaría preparar un autoextraible para qué se extraiga el juego y todas sus DLLs en una ruta especificada por mi para qué más adelante pueda automatizar el proceso.

    De todas formas, tengo preparado un archivo.bat que copia los archivos a la ruta especificada y un acceso directo al escritorio. (Todo esto pretendo hacerlo con software gratuito para no tener que pagar licencias en caso de querer comercializar el videjuego o parte de él [pero en principio es totalmente gratuito y quiero hacerlo pensando en ir mejorandolo. Por eso estoy rompiéndome el coco en hacer scripts bastante globales para qué al editar algunos parámetros lo demás corra perfectamente sin tener que buscar en cada script la parte a editar.]).

    Con respecto a lo de utilizar un FTP: ¿Me podría servir 000webhostí.

    Es posible que está opción no me sirva. ¿Alguna otra sugerencia?
    Con respecto a comentarios anteriores en este hilo:
    Con la descarga me refería a ponerla en MEGA y que se descargara desde ahí. Después que se moviera automáticamente la carpeta del juego a la dirección especificada sobrescribiendo los archivos existentes. Gracias y un saludo.

  7. #7
    Fecha de ingreso
    Jul 2011
    Mensajes
    20

    Suprimir parte del texto y elegir la linea a leer

    No sé qué has leído, pero te han engañado de mala manera.

    Un FTP es solo un protocolo para transferir archivos (Filezilla = Programa para el uso de FTP). Tu pasas un archivo como una web o una actualización a un ordenador de otra empresa. Ese ordenador es el que está las 24h encendido y es el host, se encarga de poner la web visible para todo el mundo entre otras cosas. Un hosting gratuito es pues un espacio gratuito en un host, en ese espacio puedes poner lo que quieras y puedes crear tu web en el. De echo, toda web requiere de un host, por ejemplo, el host de blogger es blogspot. Para aceder a una web concreta dentro de un host que tiene muchas webs y espacios se hace usando el punto, per eso mi blog se llama elmeunick9.blogspot, com, es y no elmeunick9.com. También puedes comprar un dominio que se redirecione a un host concreto, o incluso si tu hosting te lo permite canviar su dominio por defecto a uno propio. Eso, pero, ya es otro tema.

    En cualquier caso, veo que te falta mucho camino aún, así que, no insisto, solo te recomiendo que no abandones la idea del FTP, pues sin eso no vas a llegar a ningún sitio.

Temas similares

  1. Suprimir-rellenar con Photoshop
    Por FRANK SOLO en el foro Programas de Diseño 3D y CAD
    Respuestas: 3
    : 30-11-2023, 10:05
  2. Cómics y tebeos Aprendiendo a leer e interpretar el texto del cómic
    Por 3dpoder en el foro Ilustración y 2D
    Respuestas: 0
    : 30-04-2020, 07:42
  3. Campo texto parte del nombre del archivo
    Por Murtzia en el foro Programas de Diseño 3D y CAD
    Respuestas: 4
    : 20-08-2014, 08:16
  4. Cómo alineo un texto a una linea
    Por Gepetto en el foro Programas de Diseño 3D y CAD
    Respuestas: 10
    : 21-04-2008, 22:10
  5. Tecla suprimir
    Por rubbin en el foro Programas de Diseño 3D y CAD
    Respuestas: 10
    : 12-12-2007, 16:17