IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

convertir des pixels en pourcentages dans un fichier


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2016
    Messages : 6
    Points : 4
    Points
    4
    Par défaut convertir des pixels en pourcentages dans un fichier
    Bonjour,
    je cherche à coder en python, un script qui permette de modifier le code d'un fichier html.
    De sorte que toutes les dimensions de type width:230px, soit transformée en width:80% (le 80% correspondrait à la dimension par rapport à sa résolution, si les autres width font 390px, pareil........le but est de tout transformer en pourcentage!)

    ça serait pratique, car sinon faudrait tout changer à la main...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 276
    Points : 36 761
    Points
    36 761
    Par défaut
    Salut,

    La façon la plus simple est d'utiliser une regexp qui recherche les width:\d+px pour les remplacer par width:nn% avec nn calculé par une fonction.
    Le tuto. Python raconte comment faire çà.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2016
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    bonjour,
    je connais pas trop les langages pythons.
    ça donnerait quoi comme script?

    On commencerait par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    f=open('style.html','r').read()
     
    f.sub(

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 276
    Points : 36 761
    Points
    36 761
    Par défaut
    Salut,

    Citation Envoyé par visitprog Voir le message
    je connais pas trop les langages pythons.
    Ah ben, il faut d'abord apprendre et vous avez pleins de tuto. à votre disposition.

    Citation Envoyé par visitprog Voir le message
    ça donnerait quoi comme script?
    "programmer", c'est arriver à décomposer ce que vous voulez faire en sous-problèmes, trouver des solutions, et les composer pour réaliser le programme qui fait ce que vous en attendez.

    Le premier sous-problème est d'arriver à remplacer des "patterns" dans une chaîne de caractères.
    Pour jouer avec les regexp, le plus simple est de lancer l'interpréteur Python, créer une chaîne de caractères semblable à celle qui doit être traitée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> import re
    >>> s = 'XXX width:230px ZZZ width:30px VVV'
    Puis je teste le pattern qui va permettre de trouver ce qu'on veut remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> pattern = r'(width:)(\d+)px'
    >>> rg = re.compile(pattern)
    >>> rg.sub(r'\1***', s)
    'XXX width:*** ZZZ width:*** VVV'
    puis faire faire l'opération par une fonction.
    Et lorsque ce sous-problème sera résolu de façon satisfaisante, on va pouvoir s'attaquer aux autres.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Candidat au Club
    Homme Profil pro
    autre
    Inscrit en
    Décembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Décembre 2016
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci et si s = 'XXX width:230px ZZZ left:30px VVV'

    comment on rajoute r'(left(\d+)px' dans le patern
    Et si on veux laisser le "px" dans le résultat du sub, on fait comment?

    pour la deuxième partie, si on veux mettre les valeurs en pourcentage par rapport à la résolution(1024x768).
    il faudrait faire: (230/1024)*100, du coup faudrait changer les "px" en "%", mais je sais pas comment on rajoute un 2ème changement dans le sub et mettre dans le sub un lien vers la fonction pour faire le calcul.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 276
    Points : 36 761
    Points
    36 761
    Par défaut
    Citation Envoyé par visitprog Voir le message
    Merci et si s = 'XXX width:230px ZZZ left:30px VVV'

    comment on rajoute r'(left(\d+)px' dans le patern
    Et si on veux laisser le "px" dans le résultat du sub, on fait comment?
    Il faut mettre un pattern comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pattern =  r'([width|left]:)(\d+)px'
    Citation Envoyé par visitprog Voir le message
    pour la deuxième partie, si on veux mettre les valeurs en pourcentage par rapport à la résolution(1024x768).
    il faudrait faire: (230/1024)*100, du coup faudrait changer les "px" en "%", mais je sais pas comment on rajoute un 2ème changement dans le sub et mettre dans le sub un lien vers la fonction pour faire le calcul.
    Si vous ne connaissez ni Python, ni les expressions régulières, il faut que vous preniez le temps d'apprendre. La seule chose qu'on pourrait faire pour vous serait d'écrire le code à votre place.
    Ce que je ne ferais pas.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/11/2010, 11h36
  2. Remplacé des caractères UTF8 erronés dans plusieurs fichiers
    Par evaisse dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 31/03/2007, 23h18
  3. Insérer des images, musiques ect Dans un fichier Cpp
    Par seivin dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 04/03/2007, 18h28
  4. Réponses: 2
    Dernier message: 29/01/2007, 14h14
  5. Changer des chaînes de caractères dans un fichier
    Par troumad dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 10/11/2006, 08h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo