Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème lecture et supréssion caractères

    13 octobre 2021 à 15:34:59

    bonjour j'essaye de faire un programme qui simplifie mon ccs, pour celà il recupère mon fichier css et supprime certains caractère dont les \n mais celà ne fonctionne pas et je ne comprends pas pourquoi pouvez-vous m'aider merci

    voilà le python

    inpt = False
    if inpt:
        writepath = input("enter the file path : ")
        filename = input("enter the file name : ")
        ext = input("enter the file extention : ")
    else:
        writepath ="C:/MAMP/htdocs/symplify/"
        filename = "shop2"
        ext = "css"
    fichier = open("C:/MAMP/htdocs/symplify/shop.css", 'r')
    therme = fichier.readlines()
    end= open(writepath+"/"+filename+"."+ext,"w")
    therme = str(therme)
    therme = therme.strip('\n')
    therme = therme.strip('[]')
    end.write(str(therme))
    end.close


    et un exemple de fichier css

    /*polices*/
    
    @import url('https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap');
    
    @font-face {
        font-family: 'BebasNeue-Regular';
        src: url('BebasNeue-Regular.otf'),
             url('BebasNeue-Regular.ttf');
    }
    /*parametres principaux*/
    *{
        text-decoration: none;
        color:#252525 ;
        font-family: 'Ubuntu', sans-serif;
        font-weight: lighter;
    }
    p{
        font-size: 80%;
    }
    h3{
        font-weight: 400;
    }
    body{
    
        width: 100%;
        display: flex;
        flex-direction: column;
        margin: 0px;
    }
    ::-webkit-scrollbar-track {
        background-color: rgba(255, 255, 255, 0);
    }
    
    ::-webkit-scrollbar 
    {
        width: 10px;
    }
    ::-webkit-scrollbar-thumb {
        background-color:rgb(202, 202, 202) ;
        border-radius: 5px;
    }
    ::-webkit-scrollbar-thumb:hover
    {
        background-color: rgb(122, 122, 122);
        cursor: pointer;
    }
    #annoncesglobal{
        width: 100%;
        height: 100%;
        display: flex;
        flex-direction: row;
    }
    /*haut  de page*/
    header{
        top: 0px;
        display: flex;
        position: sticky;
        position: -webkit-sticky;
        width: 100%;
        background-color: rgba(255, 255, 255, 0.8);
        z-index: 2;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        border: rgb(189, 189, 189);
        border-style: solid;
        border-width: 0px 0px 1px 0px;
        height: 50px;
    
    }

    le rendu que j'ai 

    '/*polices*/\n', '\n', "@import url('https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap');\n", '\n', '@font-face {\n', "    font-family: 'BebasNeue-Regular';\n", "    src: url('BebasNeue-Regular.otf'),\n", "         url('BebasNeue-Regular.ttf');\n", '}\n', '/*parametres principaux*/\n', '*{\n', '    text-decoration: none;\n', '    color:#252525 ;\n', "    font-family: 'Ubuntu', sans-serif;\n", '    font-weight: lighter;\n', '}\n', 'p{\n', '    font-size: 80%;\n', '}\n', 'h3{\n', '    font-weight: 400;\n', '}\n', 'body{\n', '\n', '    width: 100%;\n', '    display: flex;\n', '    flex-direction: column;\n', '    margin: 0px;\n', '}\n', '::-webkit-scrollbar-track {\n', '    background-color: rgba(255, 255, 255, 0);\n', '}\n', '\n', '::-webkit-scrollbar \n', '{\n', '    width: 10px;\n', '}\n', '::-webkit-scrollbar-thumb {\n', '    background-color:rgb(202, 202, 202) ;\n', '    border-radius: 5px;\n', '}\n', '::-webkit-scrollbar-thumb:hover\n', '{\n', '    background-color: rgb(122, 122, 122);\n', '    cursor: pointer;\n', '}\n', '#annoncesglobal{\n', '    width: 100%;\n', '    height: 100%;\n', '    display: flex;\n', '    flex-direction: row;\n', '}\n', '/*haut  de page*/\n', 'header{\n', '    top: 0px;\n', '    display: flex;\n', '    position: sticky;\n', '    position: -webkit-sticky;\n', '    width: 100%;\n', '    background-color: rgba(255, 255, 255, 0.8);\n', '    z-index: 2;\n', '    flex-direction: row;\n', '    align-items: center;\n', '    justify-content: space-between;\n', '    border: rgb(189, 189, 189);\n', '    border-style: solid;\n', '    border-width: 0px 0px 1px 0px;\n', '    height: 50px;\n', '\n', '}\n', '#search_bar{\n', '    width: 35%;\n', '    height: 80%;\n', '    border-radius: 5px;\n', '    display: flex;\n', '    flex-wrap: nowrap;\n', '    flex-direction: row;\n', '    border-width: 1px;\n', '    border-style: solid;\n', '    border-color: rgb(223, 223, 223);\n', '}\n', '#searsh_bar_bar{\n', '    width: 90%;\n', '    background: none;\n', '    border: none;\n', '}\n',




    -
    Edité par Nicolas Hesse 13 octobre 2021 à 15:35:36

    • Partager sur Facebook
    • Partager sur Twitter
      13 octobre 2021 à 16:14:51

      Nicolas Hesse a écrit:

      bonjour j'essaye de faire un programme qui simplifie mon ccs, pour celà il recupère mon fichier css et supprime certains caractère dont les \n 


      Dis nous plutôt ce que tu souhaites faire pour "simplifier" ton fichier css.

      Ton code ne fait rien d'utile. Si tu as un fichier contenant

      un
      deux
      trois

      alors l'équivalent de ton code :

      a=open("123.txt").readlines()
      print(str(a))

      va produire

      ['un\n', 'deux\n', 'trois\n']

      qui est une chaîne inexploitable. Ensuite, tu essayes de supprimer les crochets mais ça ne va rien donner d'intéressant.


      • Partager sur Facebook
      • Partager sur Twitter
        13 octobre 2021 à 17:54:59

        merci de ta réponse alors comment obtenir une chaine exploitable, le but est de transformer tout le document en une seule ou deux lignes sans espaces ni saut de ligne comment faire
        • Partager sur Facebook
        • Partager sur Twitter
          13 octobre 2021 à 22:16:54

          Tu veux faire un minifier très basique. Si tu veux faire un programme qui soit capable de supprimer les blancs (au sens large) d'un fichier css tout en le gardant syntaxiquement valide et sémantiquement équivalent, c'est un programme  très difficile à faire : il faudrait utiliser un parseur css et sans doute aussi des expressions régulières.

          Si tu veux le faire au cas par cas en bricolant, oui c'est possible mais il faut savoir qu'il y a mille et une façon de rendre ton fichier css invalide en supprimant un espace au mauvais endroit. Ton fichier étant assez simple, on peut presque supprimer tous les blancs sans risque de la manière suivante :

          css="""
          /*polices*/
           
          @import url('https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap');
           
          @font-face {
              font-family: 'BebasNeue-Regular';
              src: url('BebasNeue-Regular.otf'),
                   url('BebasNeue-Regular.ttf');
          }
          /*parametres principaux*/
          *{
              text-decoration: none;
              color:#252525 ;
              font-family: 'Ubuntu', sans-serif;
              font-weight: lighter;
          }
          p{
              font-size: 80%;
          }
          h3{
              font-weight: 400;
          }
          body{
           
              width: 100%;
              display: flex;
              flex-direction: column;
              margin: 0px;
          }
          ::-webkit-scrollbar-track {
              background-color: rgba(255, 255, 255, 0);
          }
           
          ::-webkit-scrollbar
          {
              width: 10px;
          }
          ::-webkit-scrollbar-thumb {
              background-color:rgb(202, 202, 202) ;
              border-radius: 5px;
          }
          ::-webkit-scrollbar-thumb:hover
          {
              background-color: rgb(122, 122, 122);
              cursor: pointer;
          }
          #annoncesglobal{
              width: 100%;
              height: 100%;
              display: flex;
              flex-direction: row;
          }
          /*haut  de page*/
          header{
              top: 0px;
              display: flex;
              position: sticky;
              position: -webkit-sticky;
              width: 100%;
              background-color: rgba(255, 255, 255, 0.8);
              z-index: 2;
              flex-direction: row;
              align-items: center;
              justify-content: space-between;
              border: rgb(189, 189, 189);
              border-style: solid;
              border-width: 0px 0px 1px 0px;
              height: 50px;
           
          }
          """
          print(css.replace(" ",'').replace("\n",''))

          qui affiche

          /*polices*/@importurl('https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap');@font-face{font-family:'BebasNeue-Regular';src:url('BebasNeue-Regular.otf'),url('BebasNeue-Regular.ttf');}/*parametresprincipaux*/*{text-decoration:none;color:#252525;font-family:'Ubuntu',sans-serif;font-weight:lighter;}p{font-size:80%;}h3{font-weight:400;}body{width:100%;display:flex;flex-direction:column;margin:0px;}::-webkit-scrollbar-track{background-color:rgba(255,255,255,0);}::-webkit-scrollbar{width:10px;}::-webkit-scrollbar-thumb{background-color:rgb(202,202,202);border-radius:5px;}::-webkit-scrollbar-thumb:hover{background-color:rgb(122,122,122);cursor:pointer;}#annoncesglobal{width:100%;height:100%;display:flex;flex-direction:row;}/*hautdepage*/header{top:0px;display:flex;position:sticky;position:-webkit-sticky;width:100%;background-color:rgba(255,255,255,0.8);z-index:2;flex-direction:row;align-items:center;justify-content:space-between;border:rgb(189,189,189);border-style:solid;border-width:0px0px1px0px;height:50px;}

          qui est invalide au moins à cause du @importurl mais si tu rajoutes l'espace, le code semble valide après vérification sur ce checker.

          • Partager sur Facebook
          • Partager sur Twitter
            13 octobre 2021 à 22:54:44

            d'accord merci mais je viens de tester avec readlines et ca n'as pas l'air de fonctionner est-ce normal ?

            j'ai essaye ça :

            inpt = False
            if inpt:
                writepath = input("enter the file path : ")
                filename = input("enter the file name : ")
                ext = input("enter the file extention : ")
            else:
                writepath ="C:/MAMP/htdocs/symplify/"
                filename = "shop2"
                ext = "css"
            fichier = open("C:/MAMP/htdocs/symplify/shop.css", 'r')
            therme = fichier.readlines()
            end= open(writepath+"/"+filename+"."+ext,"w")
            therme = str(therme)
            therme = therme.replace(" ",'').replace("\n",'')
            print(therme)
            #end.write(str(therme))
            #end.close



            -
            Edité par Nicolas Hesse 13 octobre 2021 à 23:00:35

            • Partager sur Facebook
            • Partager sur Twitter
              14 octobre 2021 à 12:52:56

              utilise peut-être plutôt read()  et replace() (readlines() renvoyant une liste des lignes sur lesquels il faudrait donc boucler sur ces lignes et les joindre ensuite)

              sinon on trouve comment faire un minifier css en 7 lignes de python https://www.youtube.com/watch?v=RM9aAeJqLNs 

              -
              Edité par umfred 14 octobre 2021 à 12:59:28

              • Partager sur Facebook
              • Partager sur Twitter
                14 octobre 2021 à 18:17:42

                umfred a écrit:

                sinon on trouve comment faire un minifier css en 7 lignes de python https://www.youtube.com/watch?v=RM9aAeJqLNs 

                -
                Edité par umfred il y a environ 4 heures


                C'est un minifier minimal qui se contente de supprimer les fins de ligne (un minifier fait habituellement des tâches plus complexes comme retirer tous les espaces, les commentaires, raccourcir des noms de variables).

                Et je ne suis pas sûr que cela traite tous les cas, par exemple, d'après le checker déjà signalé, je peux écrire le code css suivant

                @import url("https://www.example.com/\
                style.css");

                mais le traitement par le minifier va transformer ça en 

                @import url("https://www.example.com/\ style.css");
                

                et je ne suis pas sûr cette fois que l'url sera trouvée.

                • Partager sur Facebook
                • Partager sur Twitter
                  14 octobre 2021 à 19:26:21

                  pas faux, c'est un minifier minimal en effet.

                  Après il y a des sites qui propose de minifier les css (soit directement en ligne soit une api appelable par python) comme ce site https://cssminifier.com/ (à tester)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 octobre 2021 à 21:37:21

                    Pour rester en Python, ICI un minifier écrit en Python et ici la fonction qui supprime les blancs. Je l'ai testé sur le code css suivant :

                    @import url("https://www.example.com/\
                    style.css");

                    et il ne s'est pas planté. Pas de parseur css, que des regex.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 octobre 2021 à 22:39:54

                      merci de vos réponses pour le moment j'ai ça et je gagne 20% de volume de fichier avec

                      if inpt:
                          writepath = input("enter the file path : ")
                          filename = input("enter the file name : ")
                          ext = input("enter the file extention : ")
                      else:
                          writepath ="C:/MAMP/htdocs/symplify/"
                          filename = "shop2"
                          ext = "css"
                      fichier = open("C:/MAMP/htdocs/symplify/shop.css", 'r')
                      therme = fichier.read()
                      end= open(writepath+"/"+filename+"."+ext,"w")
                      therme = str(therme)
                      therme = therme.replace("\n",'')
                      end.write(str(therme))
                      end.close



                      -
                      Edité par Nicolas Hesse 14 octobre 2021 à 22:42:02

                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 octobre 2021 à 0:01:06

                        Tu devrais apprendre l'idiome pour ouvrir et fermer des fichiers en Python. Au passage, tu ouvres un fichier ligne 9 que tu ne refermes pas.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 octobre 2021 à 22:09:16

                          bonsoir j'ai fermé le fichier comme ci dessous:

                          inpt = False
                          if inpt:
                              writepath = input("enter the file path : ")
                              filename = input("enter the file name : ")
                              ext = input("enter the file extention : ")
                          else:
                              writepath ="C:/MAMP/htdocs/symplify/"
                              filename = "shop2"
                              ext = "css"
                          fichier = open("C:/MAMP/htdocs/symplify/shop.css", 'r')
                          therme = fichier.read()
                          end= open(writepath+"/"+filename+"."+ext,"w")
                          therme = str(therme)
                          therme = therme.replace("\n",'')
                          end.write(str(therme))
                          end.close
                          fichier.close

                          et je vais me renseigner sur l'indiome merci de vos reponses



                          • Partager sur Facebook
                          • Partager sur Twitter
                            15 octobre 2021 à 23:44:06

                            Nicolas Hesse a écrit:

                            et je vais me renseigner sur l'indiome merci de vos reponses




                            L'idiome est sommairement décrit ici.
                            • Partager sur Facebook
                            • Partager sur Twitter

                            problème lecture et supréssion caractères

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown