bonjour
voici mon 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
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 # coding: utf-8 import random from dataclasses import dataclass from bs4 import BeautifulSoup from datetime import datetime, timedelta ,date import time #from lxml import * from lxml import etree @dataclass class Ametropie: oeil :str = None sphere : float = 0.0 cylindre :float = 0.0 axeDuCylindre :int = 0 addition : float = 0.0 photochromie :int =0 def xml(self): resultat = f"<ametropie>\r" resultat += f"<oeil>{self.oeil}</oeil>\r" resultat += f"<sphere>{self.sphere}</sphere>\r" resultat += f"<cylindre>{self.cylindre}</cylindre>\r" resultat += f"<axeDuCylindre>{self.axeDuCylindre}</axeDuCylindre>\r" resultat += f"<addition>{self.addition}</addition>\r" resultat += f"<photochromie>{self.photochromie}</photochromie>\r" resultat += f"</ametropie>" print(resultat) print("-----------------------------------") soup = BeautifulSoup(resultat ,'xml') # Mise en forme resultatsoup= soup.prettify() return resultatsoup def xml_2(self): ametropie = etree.Element("ametropie") oeil = etree.SubElement(ametropie, "oeil") oeil.text = f'{self.oeil}' sphere = etree.SubElement(ametropie, "sphere") sphere.text =f'{self.sphere}' cylindre = etree.SubElement(ametropie, "cylindre") cylindre.text = f'{self.cylindre}' axeDuCylindre = etree.SubElement(ametropie, "axeDuCylindre") axeDuCylindre.text = f'{self.axeDuCylindre}' addition = etree.SubElement(ametropie, "addition") addition.text = f'{self.addition}' photochromie = etree.SubElement(ametropie, "photochromie") photochromie.text = f'{self.photochromie}' return etree.tostring(ametropie, pretty_print=True) def aleaoire(self): self.axeDuCylindre = random.randint(0, 150) self.sphere = random.randrange(-100,100,4)/16 self.cylindre = random.randrange(-100,100,4)/16 self.addition = random.randrange(0,16,4)/16 self.photochromie = random.randint(0, 1) if __name__ == '__main__': ametropie_OD =Ametropie() ametropie_OD.oeil ="3D" ametropie_OD.aleaoire() xml_am = ametropie_OD.xml() print(xml_am) print("------------------------") xml_am = ametropie_OD.xml_2() print(xml_am)
ce qui me gène dans le résultat c'est l'affichgae que donne la class xml_2(self)
la commande de formalisation de la classe tostring extraite de "from lxml import etree " -->me retourne ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part etree.tostring(ametropie, pretty_print=True)
les métablises de formalisation des tabulations ne semblent pas pris en compte et de plus on voit apparaitre un caractère "b" devant la chaine.....
Code : Sélectionner tout - Visualiser dans une fenêtre à part b'<ametropie>\n <oeil>3D</oeil>\n <sphere>2.5</sphere>\n <cylindre>-4.5</cylindre>\n <axeDuCylindre>136</axeDuCylindre>\n <addition>0.75</addition>\n <photochromie>1</photochromie>\n</ametropie>\n'
si j'ajoute une commande format-string
cela ne change sur l'interprétation de /t
Code : Sélectionner tout - Visualiser dans une fenêtre à part print(f'{xml_am}')
et si je reprendre les données du print afficher dans la console
Code : Sélectionner tout - Visualiser dans une fenêtre à part print(f"""b'<ametropie>\n <oeil>3D</oeil>\n <sphere>2.5</sphere>\n <cylindre>-4.5</cylindre>\n <axeDuCylindre>136</axeDuCylindre>\n <addition>0.75</addition>\n <photochromie>1</photochromie>\n</ametropie>\n'""")le formalisme est plus propre mais ce caratère b est toujours
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 b'<ametropie> <oeil>3D</oeil> <sphere>2.5</sphere> <cylindre>-4.5</cylindre> <axeDuCylindre>136</axeDuCylindre> <addition>0.75</addition> <photochromie>1</photochromie> </ametropie> '
qu'en a beautifulsoop 4 c'est un peut mieux mais bon.....
Code XML : 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 <?xml version="1.0" encoding="utf-8"?> <ametropie> <oeil> 3D </oeil> <sphere> -1.0 </sphere> <cylindre> -2.0 </cylindre> <axeDuCylindre> 33 </axeDuCylindre> <addition> 0.5 </addition> <photochromie> 1 </photochromie> </ametropie>
alors si vous avez une idee elle sera bienvenue , merci
Partager