Ver Mensaje Individual
  #7 (permalink)  
Antiguo 12/01/2011, 07:03
adat21
 
Fecha de Ingreso: enero-2011
Ubicación: Barcelona
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Duda con un ejercicio pasar datos xml en diccionario

Despues de unas cuantas horas el resultado a sido este. Nose que les parece si se podria retocar algo?

Código PHP:
# -*- encoding: utf-8 -*-

from xml import*

def peces(arxiu_xml):
        
"""
        Devuelve un diccionario añadiendo el nombre de la pieza leída en el archivo
 xml como primer elemento del diccionario y como valor una tupla con la medida
 como primer elemento y el peso como segundo elemento de la pieza.

        >>> peces("
arxiu_peces.xml")
        {"
crani":("2","5"), "sensor optic":("0.5","0.2")}
    
        """

        
bd= {}
        
arxiuopen(arxiu_xml,"r")
        
textarxiu.read()
        
amenja_seguent_bloc(text"peces")
        
ba[0]
        
sb.strip()
        
cs.find(">")
        
yc+1
        etiqueta
s[0:y]
    
        while 
s.find(etiqueta)!=-1:
            
d=menja_seguent_bloc(s,etiqueta[1:c])
            
f=d[0]
            
j=f.strip()
            
g=menja_seguent_bloc(j,"nom")
            
h=menja_seguent_bloc(g[1],"mida")
            
i=menja_seguent_bloc(h[1],"pes")
            
paraula_claug[0]
            
mida=h[0]
            
pes=i[0]
            
bd[paraula_clau]=(mida,pes)
            
t=d[1]
            
s=t.strip()
  
        return 
bd
        arxiu
.close()


def models_de_cap(arxiu_xml):
        
"""
        Devuelve un diccionario añadiendo el nombre del modelo de ningún leído en
 el archivo xml como primer elemento del diccionario y como valor una tupla con el
 nombre de las piezas necesarias para fabricarlo.

        >>> models_de_cap("
arxiu.xml")
        {"
cap de visió":("crani","sensor optic","sensor optic"), "cap de audició":("crani","sensor auditiu","sensor auditiu")}

        """

       
bd={}
       
arxiu=open(arxiu_xml,"r")
        
text=arxiu.read()
        
a=menja_seguent_bloc(text,"caps")
        
b=a[0]

        
s=b.strip()

        
c=s.find(">")

        
y=c+1
        etiqueta
s[0:y]

        while 
s.find(etiqueta) !=-1:
            
d=menja_seguent_bloc(s,etiqueta[1:c])

            
f=d[0]

            
x=f.strip()
            
g=menja_seguent_bloc(x,"nom")
            
h=menja_seguent_bloc(g[1],"peces")
            
i=h[0]
            
j=i.strip()
            
k=j.find(">")
            
l=k+1
            etiqueta2
j[0:l]
            
bd[g[0]]=()
            
llista= list(bd[g[0]])
            while 
j.find(etiqueta2)!=-1:
                    
m=menja_seguent_bloc(jetiqueta2[1:k])
                    
nom_pesa=m[0]            
            
                    
llista.append(nom_pesa)
                                
                    
o=m[1]
                    
j=o.strip()
        
        
            
llistatuple(llista)

            
bd[g[0]]= llista
       
        
            p
d[1]
            
sp.strip()
        

        return 
bd
        arxiu
.close()
        


def nom_magatzem(arxiu_xml):
        
    
"""
        Devuelve un diccionario añadiendo el nombre del almacén como palabra
 clave y el valor se una tupla con la capcidad como primer elemento, el peso
 máximo como segundo elemento y el tercer elemento se una nueva tupla con el
 contenido que será otras tuplas, cada una con el nombre de la pieza y la cantidad.

        >>>nom_magatzem("
arxiu_magatzem.xml")
        {"
Magatzem 1":("20","100",{"crani": "2","sensor optic": "8","sensort auditiu": "4"})}

        """

    
bd= {}
    
dic={}
    
arxiuopen(arxiu_xml'r')
    
textarxiu.read()
    
atext.find('>')
    
ba+1
    etiqueta
text[0:b]
    while 
text.find(etiqueta) != -1:
        
dmenja_seguent_bloc(textetiqueta[1:a])
        
ed[0]
        
fmenja_seguent_bloc(e'nom')
        
nom_magatzemf[0]
        
gmenja_seguent_bloc(f[1], 'capacitat')
        
capacitatg[0]
        
hmenja_seguent_bloc(g[1], 'pesmaxim')
        
pesmaximh[0]
        
ih[1]
        
ji.find('>')
        
kj+1
        etiqueta2
i[0:k]
        while 
i.find(etiqueta2)!=-1:
            
l=menja_seguent_bloc(ietiqueta2[1:j])
            
ml[0]
            
nmenja_seguent_bloc(m'peca')
            
nom_pesan[0]
            
omenja_seguent_bloc(n[1], 'quantitat')
            
quantitato[0]
            
dic[nom_pesa]= quantitat
            l
=menja_seguent_bloc(ietiqueta2[1:j])
            
i=l[1

        
dmenja_seguent_bloc(textetiqueta[1:a])
        
textd[1]
        
bd[nom_magatzem]= (capacitatpesmaximdic)
        return 
bd
    arxiu
.close()




def recull_fitxers(arxiu_capsarxiu_pecesarxiu_magatzem):
       
"""
        Devuelve una tupla donde el primer elemento se un diccionario que cuento la
 estructura de los modelos de piezas, el segundo elemento se un diccionario que
 cuento la estructura de los modelos de ninguno y el tercer elemento se un
 diccionario que cuento la estructura de los modelos de almacén.
        >>>recull_fitxers(arxiu_caps, arxiu_peces, arxiu_magatzem)
        ({'cap de visio':('crani', 'sensor optic', 'sensor optic'), 'cap de audicio':('crani', 'sensor auditiu', 'sensor auditiu')}, {'crani':('2','5'),'sensor optic':('0.5','0.2')},{'magatzem 1':('20','100',(('sensor optic','8'),('sensor auditiu','4')))})
        """

        
apeces(arxiu_peces)
        
bmodels_de_cap(arxiu_caps)
        
cnom_magatzem(arxiu_magatzem)
        return 
ab