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

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 30
    Points
    30
    Par défaut Recherche équivalent variable et/ou fonction de open(file) de for l in open(file): pour texte déjà dans python
    Oui bonjour je recherche en python 2.7.x l'équivalent variable et/ou fonction de open(file) de for l in open(file): pour texte déjà dans python. Car même si sur ce topic Besoin d'aide pour remplacer avec expression régulière sur plusieurs lignes on n'avait répondu à ma question c'était pour un fichier pas une variable et/ou fonction qui contient déjà un texte existant, exemple ça peut être un variable et/ou fonction qui contient un texte de fichier mais qui entre temp à était modifié depuis l'ouverture du fichier et donc différent du fichier source. Si quelqu'un à la solution pour ça? Parce j'ai chercher sur internet et j'ai rien trouver. D'avance je vous remercie.

    MediaVistaIntel

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    L'exemple dans la discussion que vous mentionnez fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    re_tag=re.compile(r'[<>]')
    ...
    for l in open("source"):
        ...
        if we_are_in_the_MaxJobPerCulture_area:
            splitted_line = re_tag.split(l)
        ...
    le "l" est une variable qui contient du texte non?

    Prenez le temps d'apprendre les bases de Python.

    Courage.

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

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    L'exemple dans la discussion que vous mentionnez fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    re_tag=re.compile(r'[<>]')
    ...
    for l in open("source"):
        ...
        if we_are_in_the_MaxJobPerCulture_area:
            splitted_line = re_tag.split(l)
        ...
    le "l" est une variable qui contient du texte non?

    Prenez le temps d'apprendre les bases de Python.

    Courage.

    - W
    Oui le "l" est une variable mais pas open("source") qui ouvre obligatoirement un fichier pour ça. Comment et par quoi remplacer open("source") pour que à la place ce sois une variable et/ou fonction exemple
    variable et/ou fonction!
    Et non pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for l in open("source"):

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Comment et par quoi remplacer open("source") pour que à la place ce sois une variable et/ou fonction exemple
    open("source") est un objet de type file.
    "for l in cet_objet" utilise la propriété "iterable" de cet objet.

    Pour savoir ce que peut être un iterable, il faut avoir lu la documentation:

    iterable
    An object capable of returning its members one at a time. Examples of iterables include all sequence types (such as list, str, and tuple) and some non-sequence types like dict and file and objects of any classes you define with an __iter__() or __getitem__() method.
    ...
    Et pour savoir que des objets tels que les "iterables" existent, il faut avoir pris le temps d'apprendre.
    Bon courage.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Peut-être faudrait-il être plus précis:

    1- quand tu dis "texte déjà dans python", ce texte est sous quel forme: une seule chaine contenant toutes les lignes séparées par des fins de ligne ('\n'), ou une liste de chaines, chaque chaine contenant une ligne (["ligne1", "ligne2", ...]) ou autre forme?

    2- écris le code que tu souhaiterais avoir, et le résultat attendu.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    mon texte est contenu dans une variable qui contient tout le texte d'un coup comme ça par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    variable_texte="""<?xml version="1.0" encoding="Windows-1252"?>
            <!--Police T4-->
            <Display>
                    <Model>Data/Gfx/Building/b_sec01_t3.sgbin</Model>
                    <Placeholder>Data/Gfx/Placeholder/b_aasecu_t3.sgbin</Placeholder>
                    <SelectionLayer>PoliceServices</SelectionLayer>
            </Display>
            <EntityPosition>
                    <CollisionShape>
                            <Dimension>60,60</Dimension>
                            <Height>24.60</Height>
                    </CollisionShape>
            </EntityPosition>
            <Placement>
                    <Type>BUILDING</Type>
                    <LayerDisplay>PoliceServices</LayerDisplay>
            </Placement>
            <View>
                    <NameKey>&B_SEC01_T3</NameKey>
                    <NameKeySim>&B_SEC01_T3_SIM</NameKeySim>
                    <DescriptionKey>&B_SEC01_T3_DES</DescriptionKey>
                    <Param1Key>&B_SEC01_T3_PARAM1</Param1Key>
                    <Value1Key>&B_SEC01_T3_VALUE1</Value1Key>
                    <Param2Key>&B_SEC01_T3_PARAM2</Param2Key>
                    <Value2Key>&B_SEC01_T3_VALUE2</Value2Key>
                    <Param3Key>&B_SEC01_T3_PARAM3</Param3Key>
                    <Value3Key>&B_SEC01_T3_VALUE3</Value3Key>
                    <Panel>BuildingSelection</Panel>
            </View>
            <Layouts>
                    <LayoutFile1>Data/Design/Layout/B_Service/b_sec01_t3_Base.layout</LayoutFile1>
            </Layouts>
            <Tag>Deprecated</Tag>
            <Entity>
                    <Type>BUILDING</Type>
                    <Serializable>0</Serializable>
                    <WithOptional1>SCZCOJOBPROVIDER</WithOptional1>
                    <WithOptional2>SLACOLAYER</WithOptional2>
            </Entity>
            <JobProvider>
                    <MaxJobPerCulture>
                            <LowLife>14</LowLife>
                            <Suit>2</Suit>
                    </MaxJobPerCulture>
                    <JobAttractivityPerCulture>
                            <LowLife>50</LowLife>
                            <Suit>50</Suit>
                    </JobAttractivityPerCulture>
            </JobProvider>
            <Layer>
                    <Shape01>
                            <LayerName>PoliceServices</LayerName>
                            <Radius>100000</Radius>
                            <InfluenceMin>13</InfluenceMin>
                            <InfluenceMax>80</InfluenceMax>
                            <Type>CIRCLE</Type>
                    </Shape01>
            </Layer>
            <BudgetAgent>
                    <CitizenProvider>0</CitizenProvider>
                    <MaxMonthlyCost>40000</MaxMonthlyCost>
                    <UpkeepCost>37800</UpkeepCost>
                    <IsCityLink>no</IsCityLink>
                    <IsPublicBuilding>1</IsPublicBuilding>
                    <BudgetExpenseCategory>SERVICES_POLICE</BudgetExpenseCategory>
            </BudgetAgent>
            <Construction>
                    <IsDestroyable>1</IsDestroyable>
                    <IsZoneConstruction>0</IsZoneConstruction>
                    <PlacementType>BUILDING</PlacementType>
                    <Constructing>
                            <TimeStep>5</TimeStep>
                    </Constructing>
                    <Destroying>
                            <TimeStep>2</TimeStep>
                    </Destroying>
            </Construction>
            <Conditions>
                    <ConditionSet1>
                            <ModeName>player_lock_all</ModeName>
                            <ConstructionCost>120000</ConstructionCost>
                            <DestructionCost>12000</DestructionCost>
                            <VisibleConditions>
                                    <MinNbBuildingOnMapWithTagsRelock1>
                                            <Name>GemCity</Name>
                                            <Name2>TownHall</Name2>
                                            <Number>1</Number>
                                    </MinNbBuildingOnMapWithTagsRelock1>
                                    <NbCitizen>4751</NbCitizen>
                            </VisibleConditions>
                            <UnlockConditions>
                                    <NbCitizen>7430</NbCitizen>
                                    <MinNbBuildingOnMapWithTagsRelock1>
                                            <Name>GemCity</Name>
                                            <Name2>TownHall</Name2>
                                            <Number>1</Number>
                                    </MinNbBuildingOnMapWithTagsRelock1>
                            </UnlockConditions>
                    </ConditionSet1>
                    <ConditionSet2>
                            <ModeName>player_lock_achievement</ModeName>
                            <ConstructionCost>120000</ConstructionCost>
                            <DestructionCost>12000</DestructionCost>
                    </ConditionSet2>
            </Conditions>"""
    or si le texte et ouvert directement en fichier comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for l in open(file):
        l
    j'ai toutes les lignes une par une et les tabulations sous la forme \t et les lignes \n . Mais si j'essaie une itération de variable_texte ce mais pas du tout la même chose aux lieux de ne retourner ligne par ligne, à la place c'est caractère par caractère. Non moi ce que je veut c'est l'exacte équivalent pour variable texte de de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for l in open(file):
        l
    variable_texte et file contient tout les 2 le même texte sauf que file est un fichier bien sur et que variable texte est une variable.

  7. #7
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Voilà une solution correspondant à ce que j'ai compris. Je ne répète pas la variable "variable_texte" précédente que j'ai utilisée à titre d'exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def openchaine(chaine):
        liste = chaine.splitlines()
        for ligne in liste:
            yield ligne
     
    f = openchaine(variable_texte)
    for ligne in f:
        print ligne
    Ce qui affiche effectivement toutes les lignes
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Une autre solution est de passer par le module StringIO et de transformer le texte en fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import StringIO
    f = StringIO.StringIO(variable_texte) # iterable
    for l in f:....
    Mais pour remplacer l'iterable open(file) dans:
    il _suffit_ d'écrire pour l'exemple donné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for l in variable_texte.splitlines():
    car "for l in variable_texte" est aussi un iterable mais sur l'objet "str" qu'est "variable_texte".
    .splitlines le transforme en une autre iterable qui est une "liste" de "lignes"

    - W
    PS: un string et des listes étant des types de "bases", les méthodes associées méritent d'avoir été vue et pratiquées quelque peu.
    A défaut, vous avez des difficultés à formuler vos questions et vous vous retrouvez à inclure dans votre code des "constructions" dont vous ne maîtrisez pas les effets de bords.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Rebonjour et merci pour vos réponse, mais maintenant j'ai un autre problème
    si j'essai ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import re
    fichiercheminopen=open("z:/texte.txt", "w")
    re_tag=re.compile(r'[<>]')
    we_are_in_the_MaxJobPerCulture_area = False
    for l in variable_texte.splitlines():
        if "</MaxJobPerCulture>" in l:
            we_are_in_the_MaxJobPerCulture_area = False
        if we_are_in_the_MaxJobPerCulture_area:
            splitted_line = re_tag.split(l)
            new_val = int(splitted_line[2]) * 256
            new_line = "%s<%s>%.i<%s>\n" % (splitted_line[0], splitted_line[1], new_val, splitted_line[3])
            fichiercheminopen.write(new_line)
        else:
            fichiercheminopen.write(l)
        if "<MaxJobPerCulture>" in l:
            we_are_in_the_MaxJobPerCulture_area = True
    il est différent de celui ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import re
    fichiercheminopen=open("z:/texte.txt", "w")
    re_tag=re.compile(r'[<>]')
    we_are_in_the_MaxJobPerCulture_area = False
    for l in open(file):
        if "</MaxJobPerCulture>" in l:
            we_are_in_the_MaxJobPerCulture_area = False
        if we_are_in_the_MaxJobPerCulture_area:
            splitted_line = re_tag.split(l)
            new_val = int(splitted_line[2]) * 256
            new_line = "%s<%s>%.i<%s>\n" % (splitted_line[0], splitted_line[1], new_val, splitted_line[3])
            fichiercheminopen.write(new_line)
        else:
            fichiercheminopen.write(l)
        if "<MaxJobPerCulture>" in l:
            we_are_in_the_MaxJobPerCulture_area = True
    pour la sortie du 1er code il ne retire carrément absolument tout les \n résultat aux lieux d'un retour à la ligne comme l'original il ni en à plus et 1.024 caractères par lignes sur le bloc-notes de windows. Il a t'il moyen de remedier à ça?

    Et encore merci pour vos réponse.

    MediaVistaIntel

    PS: Si possible après pourriez vous ne dire comment remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichiercheminopen.write(nouveau_contenu)
    toujours par une variable ou fonction, aux lieux de passer par un fichier? En gros je cherche pour ça aussi l'équivalent.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    C'est un document XML.
    Un des grand avantages de ce format est de permettre de ne pas avoir a se soucier du formatage du "texte": il suffit de se laisser guider par les "balises". Enfin prendre la bibliothèque qui...

    Donc votre code devrait se découper en:

    1. Une fonction qui fait les modifications 'de l'arbre XML':

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def update_tree(tree):
        m = tree.find('*/MaxJobPerCulture')
        for e in m.iter():
            if e.text.isdigit():
                e.text = str((int(e.text) * 256))
    nota, cela remplace le block qui suit "for...in... "on laisse la bibliothèque XML trouver le noeud "MaxJobPerCulture" et on multiplie par 256 toutes les éléments dont les valeurs sont des "entiers".

    2. une lecture, modification, écriture.
    Puisque nous avons fait une fonction, il ne reste qu'à l'alimenter plutôt que de recopier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import xml.etree.ElementTree as et
    tree = et.fromstring(XML)
    update_tree(tree)
    print (et.tostring(tree) )
    Après le soucis est peut être que le XML que vous avez n'est peut être pas assez "XML" pour être analysé par une bibliothèque XML.
    nota, j'ai du le modifier pour que "çà y ressemble".

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

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Rebonjour, oui tu a peut être raison mon fichier ne ressemble peut être pas assez a du xml pour être analysé par une bibliothèque XML, le problème c'est que je ne peut pas modifié comme bon ne semble la structure du fichier donc l'extension et .class , sinon Cities XL risque de pas aimé voir de pas aimé du tout il risque tout simplement de ne pas vouloir démarrer parce que plugins incorrect dans leurs programmations! Si donc il existe l'équivalent exacte de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for l in open(file):
        l
    pour open(file): et qui répète la mise en page et les lignes etc...
    et ensuite lorsque le problème de open(file): sera résolu je voudrais la même chose mais c'est fois ci pour l'écriture aux lieux d'écrit dans un fichier écrit dans une variable et/ou fonction pour que si j'ai à traiter plusieurs fois le texte que ce sois sans fichier intermédiaire.

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    mon fichier ne ressemble peut être pas assez a du xml pour être analysé par une bibliothèque XML
    Dans l'entête de votre fichier est écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="Windows-1252"?>
    => Le "producteur" de ces informations doit fournir un fichier "conforme" et éventuellement un .XSD ou un .DTD pour qu'on puisse assurer la conformité des informations avec le "schéma" qui va "avec".

    Un tel défaut s'appelle "dette technique".
    Son effet pervers est d'obliger à inventer du code qui doit s'adapter à un contexte "indéfini" plutôt que d'utiliser simplement des bibliothèques qui permettent de le réaliser de façon simple et fiable.
    Et confier le boulot à une personne inexpérimentée ne fera qu'empirer les choses...

    Si donc il existe l'équivalent exacte de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for l in open(file):
        l
    pour open(file): et qui répète la mise en page et les lignes etc...
    En entrée vous avez du "texte" et en sortie vous voulez produire un "texte modifié". Il vous faut donc définir une fonction update_buffer(text) qui retournera le text_modifie dont vous ferez ensuite ce que vous voulez (nouvelle variable, nouveau fichier,...)
    Si le buffer doit être lu à partir d'un fichier, vous lui passerez le résultat de f.read(), si c'est une "variable", ce sera la variable.

    La première chose que devra faire update_buffer sera de mettre en forme le "buffer" text pour que vous puissiez y appliquer la modification de façon "fiable". Effectuer la modification, puis éventuellement remettre les choses "en place" avant de retourner le buffer.
    Ce qui pourrait s'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def update_buffer(text):
         temp = normalize(text)
         temp = transform(temp)
         return denormalize(temp)
    Imaginons que vous construisiez transform(temp) à partir de votre code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    def transform(temp):
        results = []
        for line in temp.getlines():
            if "</MaxJobPerCulture>" in line:
                we_are_in_the_MaxJobPerCulture_area = False
            if we_are_in_the_MaxJobPerCulture_area:
                splitted_line = re_tag.split(line)
                new_val = int(splitted_line[2]) * 256
                new_line = "%s<%s>%.i<%s>\n" % (splitted_line[0], splitted_line[1], new_val, splitted_line[3])
                results.append(new_line)
           else:
               results.append(line)
           if "<MaxJobPerCulture>" in line:
               we_are_in_the_MaxJobPerCulture_area = True
        return '\n'.join(results)
    Comment savoir ce que devra faire normalize(text) pour que ce qu'on donne à manger à transform produise le résultat attendu?

    S'il faut écrire un denormalize pour remettre les choses en état, que faudra-t-il appliquer?

    Ce que je veux dire c'est que ce que vous demandez n'existe pas, c'est à vous de l'écrire.

    A mon sens, le moins pire serait que "normalize" effectue le minimum pour que le "buffer" soit un .XML acceptable par transform.
    Cela évitera d'avoir des tas de cas à traiter et à défaire dans denormalize.

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

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Merci pour tes réponses wiztricks et merci pour vos réponses vous autres, mais malheureusement je n'ai pas trouver ce que je chercher à savoir ce que je demandais, et je crois, que je vais, n'arrêter là et ne résignez à passer tout de même par un ou plusieurs fichier temp dommage mais peut plus sage que de modifié la structure qui risque de foutre le bordel. Et encore merci beaucoup pour votre aide à tous!

    MediaVistaIntel

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Rebonjour, après avoir ressayer ton code wiztricks, j'ai un message d'erreur et j'ai beau consulter la faq python du site rien ni fait j'ai pas trouver la solution, le message d'erreur en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        for line in temp.getlines():
    AttributeError: 'str' object has no attribute 'getlines'
    il se produit sur le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    def transform(temp):
        results = []
        for line in temp.getlines():
            if "</MaxJobPerCulture>" in line:
                we_are_in_the_MaxJobPerCulture_area = False
            if we_are_in_the_MaxJobPerCulture_area:
                splitted_line = re_tagtagtagtag.split(line)
                new_val = int(splitted_line[2]) * 256
                new_line = "%s<%s>%.i<%s>\n" % (splitted_line[0], splitted_line[1], new_val, splitted_line[3])
                results.append(new_line)
           else:
               results.append(line)
           if "<MaxJobPerCulture>" in line:
               we_are_in_the_MaxJobPerCulture_area = True
        return '\n'.join(results)
    ligne 3 comment résoudre le problème, je précise que si ça marche et que si ça fait ce que je veut alors je pourrais mettre enfin résolu aux topic, enfin.
    Edit: Problème résolu enfin oui parce que là je n''arracher les cheveux,
    le code qui résout le problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    # -*- coding: cp1252 -*-
    import re
    fichier=open("Source", "r")#On ouvre le fichier Source en lecture seul
    fileread=fichier.read()#On lit toutes les lignes d'un seul dans une variable
    def transform(temp):#On défini la fontion
        results = []
        re_tag=re.compile(r'[<>]')
        we_are_in_the_MaxJobPerCulture_area = False
        for line in temp.splitlines():
            if "</MaxJobPerCulture>" in line:
                we_are_in_the_MaxJobPerCulture_area = False
            if we_are_in_the_MaxJobPerCulture_area:
                splitted_line = re_tag.split(line)
                new_val = int(splitted_line[2]) * 256
                new_line = "%s<%s>%.i<%s>" % (splitted_line[0], splitted_line[1], new_val, splitted_line[3])#surtout à la fin de la regex ne pas mettre \n
                results.append(new_line)
            else:
               results.append(line)
            if "<MaxJobPerCulture>" in line:
               we_are_in_the_MaxJobPerCulture_area = True
        return '\n'.join(results)
    var=transform(fileread)#On met le texte final dans une variable
    file1=open("Destination", "w")#Et on peut écrit le texte dans le fichier
    filew=file1.writelines(var)
    fichier.close()
    file1.close()#Puis on ferme les fichiers
    Parce que je devenez complétement fou, mais alors je ne vous dis même pas comment.

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,
    Je ne sais plus trop pourquoi le .getlines
    En tous cas, si "temp" est de type "str" et qu'on souhaite itérer sur des "lignes", .splitlines() devrait faire.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Planning Intervenant - FONCTION RECHERCHE AVEC VARIABLE
    Par cess2308 dans le forum Excel
    Réponses: 8
    Dernier message: 27/12/2012, 19h20
  2. Rechercher une variable ou fonction
    Par FoxLeRenard dans le forum Langage
    Réponses: 0
    Dernier message: 13/03/2009, 17h41
  3. Recherche équivalent de la fonction php addslashes
    Par Pgs dans le forum C++Builder
    Réponses: 5
    Dernier message: 01/04/2008, 10h53
  4. Réponses: 3
    Dernier message: 21/04/2007, 06h18

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