属性错误:'list'对象属性'append'是只读的 // 正则表达式组(1) / 大文件 xml



我需要从大站点XML文件中选择数据以获取这样的内容:

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

但是,在测试我的代码时,我会收到此错误:

# 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

这是我的代码:

 #!/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

您正在尝试通过分配更改python列表。您必须使用附录。

In [24]: l = []
In [25]: l.append = 5  # wrong
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-25-cc4bc6747222> in <module>()
----> 1 l.append = 5
AttributeError: 'list' object attribute 'append' is read-only
In [26]: l.append(5)   # correct way
In [27]: l
Out[27]: [5]

最新更新