Oui bonjour, je suis débutant en python et j'ai besoin d'aide pour remplacer sur plusieurs lignes avec expression régulière exemple si j'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<JobProvider>
<MaxJobPerCulture>
<LowLife>décimal</LowLife>
<AllAm>décimal</AllAm>
<Suit>décimal</Suit>
<Elite>décimal</Elite>
</MaxJobPerCulture>
<JobAttractivityPerCulture>
<LowLife>décimal</LowLife>
<AllAm>décimal</AllAm>
<Suit>décimal</Suit>
<Elite>décimal</Elite>
</JobAttractivityPerCulture>
</JobProvider>
je voudrais remplacer le nombre décimal de chaque balise dont la partie est entre et par le même mais multiplier individuellement par variable fixe pour tout les nombres , mais voilà comme seul ces 2 balise pour cette section
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<MaxJobPerCulture>
<LowLife>décimal</LowLife>
<AllAm></AllAm>
<Suit>décimal</Suit>
<Elite>décimal</Elite>
</MaxJobPerCulture>
est obligatoire les autres quel que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<LowLife>décimal</LowLife>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<AllAm>décimal</AllAm>
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<Elite>décimal</Elite>
peuvent être là (aux moins 1 des 4 minimum) aléatoirement c'est à dire présente ou non. J'ai essayer ça comme base
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
# -*- coding: cp1252 -*-
import re
#Multiplieurs
multiplieurCapacity = int(raw_input('entrée un nombre pour multiplier la Capacitée par '))
def multi(MaxJobPerCulture):
    return MaxJobPerCulture.group(1) + MaxJobPerCulture.group(2) + MaxJobPerCulture.group(3) + str(int(MaxJobPerCulture.group(4)) * multiplieurCapacity) + MaxJobPerCulture.group(5) + MaxJobPerCulture.group(6) + MaxJobPerCulture.group(7)
MaxJobPerCulture_AllAm='([\t]*<MaxJobPerCulture>)([\n\t.]*)(<AllAm>)(\d*)(</AllAm>)(\n*.*)(\n[\t]*</MaxJobPerCulture>)'
MaxJobPerCulture_Suit='([\t]*<MaxJobPerCulture>)([\n\t.]*)(<Suit>)(\d*)(</Suit>)(\n*.*)(\n[\t]*</MaxJobPerCulture>)'
print MaxJobPerCulture_AllAm
print MaxJobPerCulture_Suit
sur un exemple simple de 4 lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
		<MaxJobPerCulture>
			<AllAm>décimal</AllAm>
			<Suit>décimal</Suit>
		</MaxJobPerCulture>
mais ça ne marche pas, que sur la 1er balise AllAm, pas la 2ème Suit et ça peut être encore plus compliquer que ça et même dans le désordre. Ma question est simple comment faire pour que le remplacement marche sur la zone de balise d'écrit plus haut entre et ce pour des balises dans n'importe ordre et quel sois oui ou non présente?