dimanche 19 juin 2016

AttributeError: 'list' object attribute 'append' is read-only // regexp group(1) / big file xml

I need to select data from a big sitemap XML file to get something like this :

(title,img,link,txt)
(title,img,link,txt)
(title,img,link,txt)

but when testing my code, I got this error :

# Traceback (most recent call last):   File "./u2.py", line 91, in <module>
  s.pluj(x,i)   File "./u2.py", line 46, in pluj
  tab.append = (xx.group(1)) AttributeError: 'list' object attribute 'append' is read-only

Here is my code :

 #!/usr/bin/env python

    import linecache
    import re


    def w2(arg1):
        wiersz = linecache.getline('a.xml', arg1)
        return  wiersz

    count = len(open('a.xml', 'rU').readlines())
    #print count

    class rep:

    #   tab = []
        def pluj(self, linia, nr):
            adres1 = r'<loc><![CDATA[(.*?)]]></loc>'
            foto1  = r'<image:loc><![CDATA[(.*?)]]></image:loc>'
            opis1  = r'<image:caption><![CDATA[(.*?)]]></image:caption>'
            title1 = r'<image:title><![CDATA[(.*?)]]></image:title>'


            self.linia = linia
            #print linia
            tab = []
            adres = re.compile(adres1)
            foto = re.compile(foto1)
            opis = re.compile(opis1)
            title = re.compile(title1)               

            print nr
            if re.match(adres, linia):
                xx = adres.search(linia)

                tab.append = (xx.group(1))
            #   return xx.group(1)
            if re.match(foto, linia):
                xx = foto.search(linia)
                tab.append =  (xx.group(1))
#   return xx.group(1)
            if re.match(opis, linia):
                xx = opis.search(linia)
                tab.append =  (xx.group(1))
#   return xx.group(1)
            if re.match(title, linia):
                xx = title.search(linia)
                tab.append = (xx.group(1))
#   return xx.group(1)
            else: print "nope"

    ##################
    # end rep
    #################

    s = rep()

    i = 0
    while i <= count:

        x = w2(i) 
        #print s.pluj(x,i)                                                                                                   
        s.pluj(x,i)
        i += 1

    print s.tab

Aucun commentaire:

Enregistrer un commentaire