Partage
  • Partager sur Facebook
  • Partager sur Twitter

Segmentation d'objet en fonction du name

Sujet résolu
    13 février 2020 à 15:53:18

    Bonjour, 

    Je souhaite segmenter mes composant de type analog de cette façons : 

    (avec //LSB = le premier ; //MSB = dernier)

    /** contient la description des Entrées/Sortie du composant Identification. */
    static const IdentificationIO identification_io =
    {
        .product_id =
        {
            [ 0 ] = // LSB
            {
                .connector = IO_CN51S04,
                .signal = 5,
                .function = IO_FUNCTION_DO,
            },
            [ 1 ] =
            {
                .connector = IO_CN51S04,
                .signal = 6,
                .function = IO_FUNCTION_DO,
            },
            [ 2 ] =
            {
                .connector = IO_CN51S04,
                .signal = 7,
                .function = IO_FUNCTION_DO,
            },
            [ 3 ] = // MSB
            {
                .connector = IO_CN51S04,
                .signal = 8,
                .function = IO_FUNCTION_DO,
            },
        },
        .product_rev_min =
        {
            [ 0 ] = // LSB
            {
                .connector = IO_CN51S04,
                .signal = 13,
                .function = IO_FUNCTION_DO,
            },
            [ 1 ] =
            {
                .connector = IO_CN51S04,
                .signal = 14,
                .function = IO_FUNCTION_DO,
            },
            [ 2 ] =
            {
                .connector = IO_CN51S04,
                .signal = 15,
                .function = IO_FUNCTION_DO,
            },
            [ 3 ] = // MSB
            {
                .connector = IO_CN51S04,
                .signal = 16,
                .function = IO_FUNCTION_DO,
            },
        },

    MON CODE : 

     for analog in component.analog_list:
            if "[" in analog.name and "]" in analog.name:
                name = analog.name.split("[")[0]
                slot = analog.name.split("[")[:0]
                mon_fichier_c.write("    .{} = \n    {}\n".format(name,"{"))
                mon_fichier_c.write("        .{} = \n    {}\n".format(slot,"{"))
                mon_fichier_c.write("            .connector = IO_{},\n            .signal = {},\n            .function = IO_FUNCTION_{},\n".format(
                    analog.io.connector,analog.io.pin,analog.io.function))
                mon_fichier_c.write("    },\n")

    LE RÉSULTAT  : 

    .product_id = 
        {
            .[] = 
            {
                .connector = IO_CN51S04,
                .signal = 5,
                .function = IO_FUNCTION_DO,
            },
        .product_id = 
        {
            .[] = 
            {
                .connector = IO_CN51S04,
                .signal = 6,
                .function = IO_FUNCTION_DO,
            },
        .product_id = 
        {
            .[] = 
            {
                .connector = IO_CN51S04,
                .signal = 7,
                .function = IO_FUNCTION_DO,
            },
        .product_id = 
        {
            .[] = 
            {
                .connector = IO_CN51S04,
                .signal = 8,
                .function = IO_FUNCTION_DO,
            },
        .product_ind_min = 
        {
            .[] = 
            {
                .connector = IO_CN51S04,
                .signal = 13,
                .function = IO_FUNCTION_DO,
            },
        .product_ind_min = 
        {
            .[] = 
            {
                .connector = IO_CN51S04,
                .signal = 14,
                .function = IO_FUNCTION_DO,
            },
        .product_ind_min = 
        {
            .[] = 
            {
                .connector = IO_CN51S04,
                .signal = 15,
                .function = IO_FUNCTION_DO,
            },
        .product_ind_min = 
        {
            .[] = 
            {
                .connector = IO_CN51S04,
                .signal = 16,
                .function = IO_FUNCTION_DO,
            },
    






    -
    Edité par LeBroSympa 13 février 2020 à 15:55:15

    • Partager sur Facebook
    • Partager sur Twitter

    Jeune développeur en quête de connaissances ...

      13 février 2020 à 16:15:22

      pourquoi tu ne fais pas un json ?
      • Partager sur Facebook
      • Partager sur Twitter
        13 février 2020 à 16:18:09

        tout simplement pcq les choix me sont imposés :/

        tu trouve ma question trop compliqué en python pure ? 

        -
        Edité par LeBroSympa 13 février 2020 à 16:32:37

        • Partager sur Facebook
        • Partager sur Twitter

        Jeune développeur en quête de connaissances ...

          13 février 2020 à 19:32:43

          Bah non j'ai fait des fichiers plus compliqués que ça...

          Mais là je ne comprend même pas ce qui est demandé. Les LSB etc ça sort d'où ?

          • Partager sur Facebook
          • Partager sur Twitter
            14 février 2020 à 8:19:50

            C'est un commentaire a mettre :

            LSB pour la première occurence et MSB pour la dernière 

            • Partager sur Facebook
            • Partager sur Twitter

            Jeune développeur en quête de connaissances ...

              14 février 2020 à 8:50:39

              Ok mais de toute façon je ne vois pas où est la difficulté.

              C'est chiant à coder, mais absolument pas difficile, il suffit de faire des boucles...

              • Partager sur Facebook
              • Partager sur Twitter
                14 février 2020 à 10:23:29

                slot = analog.name.split("[")[:0]

                tu as testé ce que donnait cette ligne sur ton interpréteur python ?

                EDIT: On ne sait absolument pas ce à quoi tu t'attends comme sortie de fichier. Ça serait bien de connaître l'objectif un minimum...

                -
                Edité par fred1599 14 février 2020 à 10:24:46

                • Partager sur Facebook
                • Partager sur Twitter

                Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                  14 février 2020 à 10:57:18

                  Bas si regarde bien j'ai mis l'objectif a atteindre puis mon code puis ce que mon code donne ... :euh:

                  -
                  Edité par LeBroSympa 14 février 2020 à 10:57:48

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Jeune développeur en quête de connaissances ...

                    14 février 2020 à 11:30:13

                    Nan mais le truc c'est que [:0] renvoie forcément une liste vide.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 février 2020 à 11:34:42

                      Ouais je sais j'ai juste montré mon exemple de code c'étais un test a la base ^^

                      pour que vous puissiez visualiser ou je suis rendus a peu prêt 

                      -
                      Edité par LeBroSympa 14 février 2020 à 11:35:03

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Jeune développeur en quête de connaissances ...

                        14 février 2020 à 14:02:18

                        Ce que je veux c'est le contenu final attendu dans ton fichier, pas plus compliqué que ça
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                        La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                          14 février 2020 à 14:25:11

                          Bon je te le remets ici mais je t'ais dis qu'il était au dessus :

                          /** contient la description des Entrées/Sortie du composant Identification. */
                          static const IdentificationIO identification_io =
                          {
                              .product_id =
                              {
                                  [ 0 ] = // LSB
                                  {
                                      .connector = IO_CN51S04,
                                      .signal = 5,
                                      .function = IO_FUNCTION_DO,
                                  },
                                  [ 1 ] =
                                  {
                                      .connector = IO_CN51S04,
                                      .signal = 6,
                                      .function = IO_FUNCTION_DO,
                                  },
                                  [ 2 ] =
                                  {
                                      .connector = IO_CN51S04,
                                      .signal = 7,
                                      .function = IO_FUNCTION_DO,
                                  },
                                  [ 3 ] = // MSB
                                  {
                                      .connector = IO_CN51S04,
                                      .signal = 8,
                                      .function = IO_FUNCTION_DO,
                                  },
                              },
                              .product_rev_min =
                              {
                                  [ 0 ] = // LSB
                                  {
                                      .connector = IO_CN51S04,
                                      .signal = 13,
                                      .function = IO_FUNCTION_DO,
                                  },
                                  [ 1 ] =
                                  {
                                      .connector = IO_CN51S04,
                                      .signal = 14,
                                      .function = IO_FUNCTION_DO,
                                  },
                                  [ 2 ] =
                                  {
                                      .connector = IO_CN51S04,
                                      .signal = 15,
                                      .function = IO_FUNCTION_DO,
                                  },
                                  [ 3 ] = // MSB
                                  {
                                      .connector = IO_CN51S04,
                                      .signal = 16,
                                      .function = IO_FUNCTION_DO,
                                  },
                              },



                          • Partager sur Facebook
                          • Partager sur Twitter

                          Jeune développeur en quête de connaissances ...

                            14 février 2020 à 14:30:11

                            Bon alors on s'est mal compris, je pensais que le fichier du dessus était celui de départ.

                            Quel est le fichier de départ du coup ?

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                            La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                              14 février 2020 à 14:40:45

                              ahah pas de soucis nan du coup tu entends quoi par fichier de départ je t'ais donné le résultat attendus le code que j'ai fais et ce qu'il donne.
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Jeune développeur en quête de connaissances ...

                                14 février 2020 à 14:50:42

                                Le fichier que tu as en entrée (à traiter) et celui en sortie (attendu en fin de traitement après exécution de ton code).

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                                La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                                  14 février 2020 à 15:16:55

                                  Ce que je veux obtenir : 

                                  /** contient la description des Entrées/Sortie du composant Identification. */
                                  static const IdentificationIO identification_io =
                                  {
                                      .product_id =
                                      {
                                          [ 0 ] = // LSB
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 5,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 1 ] =
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 6,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 2 ] =
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 7,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 3 ] = // MSB
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 8,
                                              .function = IO_FUNCTION_DO,
                                          },
                                      },
                                      .product_rev_min =
                                      {
                                          [ 0 ] = // LSB
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 13,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 1 ] =
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 14,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 2 ] =
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 15,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 3 ] = // MSB
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 16,
                                              .function = IO_FUNCTION_DO,
                                          },
                                      },
                                      .product_rev_maj =
                                      {
                                          [ 0 ] = // LSB
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 17,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 1 ] =
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 18,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 2 ] =
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 19,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 3 ] = // MSB
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 20,
                                              .function = IO_FUNCTION_DO,
                                          },
                                      },
                                      .pcb_1 =
                                      {
                                          [ 0 ] = // LSB
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 24,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 1 ] =
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 25,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 2 ] = // MSB
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 26,
                                              .function = IO_FUNCTION_DO,
                                          },
                                      },
                                      .mmi_id =
                                      {
                                          [ 0 ] = // LSB
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 21,
                                              .function = IO_FUNCTION_DO,
                                          },
                                          [ 1 ] = // MSB
                                          {
                                              .connector = IO_CN51S04,
                                              .signal = 22,
                                              .function = IO_FUNCTION_DO,
                                          }
                                      }
                                  };




                                  Mon CSV avec mes données : 

                                  c.name c.address signal   io.pin io.function d.name  
                                  identification 1 DI_PRODUCT_ID_1   5 DO product_id[0]  
                                  identification 1 DI_PRODUCT_ID_2   6 DO product_id[1]  
                                  identification 1 DI_PRODUCT_ID_3   7 DO product_id[2]  
                                  identification 1 DI_PRODUCT_ID_4   8 DO product_id[3]  
                                  identification 1 DI_PRODUCT_IND_MIN_1   13 DO product_ind_min[0]  
                                  identification 1 DI_PRODUCT_IND_MIN_2   14 DO product_ind_min[1]  
                                  identification 1 DI_PRODUCT_IND_MIN_3   15 DO product_ind_min[2]  
                                  identification 1 DI_PRODUCT_IND_MIN_4   16 DO product_ind_min[3]  
                                  identification 1 DI_PRODUCT_IND_MAJ_1   17 DO product_ind_maj[0]  
                                  identification 1 DI_PRODUCT_IND_MAJ_2   18 DO product_ind_maj[1]  
                                  identification 1 DI_PRODUCT_IND_MAJ_3   19 DO product_ind_maj[2]  
                                  identification 1 DI_PRODUCT_IND_MAJ_4   20 DO product_ind_maj[3]  
                                  identification 1 DI_EVO_PCB_N1_1   24 DO pcb_1[0]  
                                  identification 1 DI_EVO_PCB_N1_2   25 DO pcb_1[1]  
                                  identification 1 DI_EVO_PCB_N1_3   26 DO pcb_1[2]  
                                  identification 1 DI_MMI_ID1   21 DO mmi_id[0]  
                                  identification 1 DI_MMI_ID2   22 DO mmi_id[1]  

                                  -
                                  Edité par LeBroSympa 14 février 2020 à 15:21:19

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Jeune développeur en quête de connaissances ...

                                    14 février 2020 à 15:31:33

                                    Il n'y a que les colonnes io.pin et d.name qui servent à qqchose ?

                                    Parce que la colonne signal je ne vois pas où tu la met et les autres colonnes ont toujours la même valeur.

                                    M'enfin depuis le début on doit être devin avec toi :-°

                                    -
                                    Edité par thelinekioubeur 14 février 2020 à 15:32:29

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      14 février 2020 à 15:41:12

                                      j'ai juste réduis le tableau en vous donnant les données qui sont utiles donc oui ya des valeurs useless ^^
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Jeune développeur en quête de connaissances ...

                                        14 février 2020 à 15:58:09

                                        Ça ne répond pas à ma question...

                                        Qu'est ce qu'il faut faire avec c.name, c.address, signal et io.function ?

                                        -
                                        Edité par thelinekioubeur 14 février 2020 à 15:58:21

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          14 février 2020 à 16:05:22

                                          mais ... je suis perdus la 

                                          Je te t'ais donné ce que je veux obtenir et ce que j'ai fais (certe ça marche pas après mes données je les utilise dans le code rendus 

                                          je génère du code c++ en python 

                                          et je cherche comment arriver a ça : 

                                          /** contient la description des Entrées/Sortie du composant Identification. */
                                          static const IdentificationIO identification_io =
                                          {
                                              .product_id =
                                              {
                                                  [ 0 ] = // LSB
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 5,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 1 ] =
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 6,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 2 ] =
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 7,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 3 ] = // MSB
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 8,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                              },
                                              .product_rev_min =
                                              {
                                                  [ 0 ] = // LSB
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 13,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 1 ] =
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 14,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 2 ] =
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 15,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 3 ] = // MSB
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 16,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                              },
                                              .product_rev_maj =
                                              {
                                                  [ 0 ] = // LSB
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 17,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 1 ] =
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 18,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 2 ] =
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 19,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 3 ] = // MSB
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 20,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                              },
                                              .pcb_1 =
                                              {
                                                  [ 0 ] = // LSB
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 24,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 1 ] =
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 25,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 2 ] = // MSB
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 26,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                              },
                                              .mmi_id =
                                              {
                                                  [ 0 ] = // LSB
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 21,
                                                      .function = IO_FUNCTION_DO,
                                                  },
                                                  [ 1 ] = // MSB
                                                  {
                                                      .connector = IO_CN51S04,
                                                      .signal = 22,
                                                      .function = IO_FUNCTION_DO,
                                                  }
                                              }
                                          };

                                          Sachant que mon code actuel ressemble a ça mais qu'il ne marche pas . 

                                          for analog in component.analog_list:
                                                  if "[" in analog.name and "]" in analog.name:
                                                      name = analog.name.split("[")[0]
                                                      slot = analog.name.split("[]")[:0]
                                                      my_file_c.write("    .{} = \n    {}\n".format(name,"{"))
                                                      my_file_c.write("        .{} = \n        {}\n".format(slot,"{"))
                                                      my_file_c.write("            .connector = IO_{},\n            .signal = {},\n            .function = IO_FUNCTION_{},\n".format(
                                                          analog.io.connector,analog.io.pin,analog.io.function))
                                                      my_





                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Jeune développeur en quête de connaissances ...

                                            14 février 2020 à 17:08:41

                                            Bref je ne comprend pas tout, je vais me cantonner à ton code en espérant que toi tu saches quoi faire :D

                                            Ligne 4, toujours pas bon, pourtant je t'ai fais la remarque là-dessus, vérifie sur ton interpréteur python... donc slot ne peut retourner ce que tu souhaites.

                                            Par exemple sur mon interpréteur,

                                            >>> product = "product_ind_min[0]"
                                            >>> slot = product[-2]
                                            >>> slot
                                            '0'
                                            

                                            On peut aussi faire cela avec les expressions régulières,

                                            >>> import re
                                            >>> product = "product_ind_min[0]"
                                            >>> p = re.compile("(?P<name>product\w+).+(?P<number>\d).+")
                                            >>> res = p.match(product)
                                            >>> res.group('name')
                                            'product_ind_min'
                                            >>> res.group('number')
                                            '0'
                                            




                                            -
                                            Edité par fred1599 14 février 2020 à 17:40:41

                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                                            La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                                            Segmentation d'objet en fonction du name

                                            × 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