zoukankan      html  css  js  c++  java
  • Python的findall()和xml

    除了正则可以使用findall(), ElementTree也使用findall()

    字符串对象只能使用find()

    >>>xml_str="""
    <a>
        <b>1</b>
        <b>2</b>
        <c>
            <d>
                <b>3</b>
                <b>4</b>
            </d>
            <e>
                <b>5</b>
                <b>6</b>
            </e>
        </c>
    </a>
    """

    >>> tag=xml.etree.ElementTree.fromstring(xml_str)
    >>> find_tag=tag.findall("a")
    >>> print find_tag
    []
    /****当前节点和非当前节点的子节点(如d)直接搜索不到*****/

    >>> find_tag=tag.findall("*") /**找出所有一级子节点**/
    >>> print find_tag
    [<Element 'b' at 0x20c77b0>, <Element 'b' at 0x20c7830>, <Element 'c' at 0x20c7850>]

    >>> find_tag=tag.findall("b") /**找出一级子节点b**/
    >>> print find_tag
    [<Element 'b' at 0x20c77b0>, <Element 'b' at 0x20c7830>]
    >>> for item in find_tag:
     print item,item.text

    <Element 'b' at 0x20c77b0> 1
    <Element 'b' at 0x20c7830> 2

    >>> find_tag=tag.findall(".//b") /**找出所有子节点b**/
    >>> find_tag=tag.findall("d") /**找出节点d**/
    >>> print find_tag
    []
    /***想要找到节点d,需要如下写出路径,不包括当前节点***/
    >>> find_tag=tag.findall("c/d")/***找出节点d***/
    >>> tag_c=tag.find(".//c")
    >>> find_tag=tag_c.findall(".//b") /**从c的节点开始找b**/
    >>> find_tag=tag_c.findall("*//b") /**从b的上一级节点即c和d开始找b**/
    >>> find_tag=tag_c.findall("d/b") /**从c下的d开始找b**/

    find()和findall()
    findall("*") findall("*//")和findall(".//")
  • 相关阅读:
    【转】C# 注册表简单操作
    [转]VC++之随父窗口变化调整控件大小/位置
    [转]vc 汉字汉语拼音首字母如何获取
    [转]浅析ActiveX控件的CAB压缩
    [转]VC6.0中使用MFC开发ActiveX及简单验证
    ElasticSearch增加索引字段
    单词缩写
    linux命令
    使用PR插件Twixtor Pro对视频补帧
    Linux创建脚本服务
  • 原文地址:https://www.cnblogs.com/20120810bubu/p/2917268.html
Copyright © 2011-2022 走看看