2012-12-02 45 views
12

我得到了python 2.6.1中的路径分隔符错误。我没有发现这个问题与Python 2.7.2版本,但不幸的是,我只需要在2.6.1。有没有其他方法可以达到同样的效果? :(Python 2.6.1:期望的路径分隔符([)

我的代码: -

import xml.etree.ElementTree as ET #version 1.2.6 
import sys 

class usersDetail(object): 

    def __init__(self, users=None): 
     self.doc = ET.parse("test.xml") 
     self.root = self.doc.getroot() 

    def final_xml(self,username): 
     r = self.root.find("user[@username='user1']") #not working in 2.6.1 :(
     self.root.remove(r) 
     print r 
     tree = ET.ElementTree(self.root) 
     tree.write("msl.xml") 

if __name__ == '__main__': 
    parser = usersDetail() 
    parser.final_xml("user1") 

的test.xml是: -

<?xml version="1.0"?> 
<users> 
<user afp="yes" cifs="yes" username="user1" volume="vol" webdev="yes" /></user> 
</users> 

这将完成是它会删除XML只有在用户名=用户名预先感谢。您的宝贵时间

回答

16

您正在使用XPath表达式,Python 2.6中包含的ElementTree版本不支持该表达式,您需要在之后手动筛选属性:

def final_xml(self,username): 
    users = self.root.findall("user") 
    for user in users: 
     if user.attrib.get('username') == 'user1': 
      break 
    else: 
     raise ValueError('No such user') 

    # `user` is now set to the correct element 
    self.root.remove(user) 
    print user 
    tree = ET.ElementTree(self.root) 
    tree.write("msl.xml") 
+1

是的,你说得对。 –

相关问题