lxml.etree去除子节点

lxml.etree去除子节点

去除etree中的某个子节点有两种方法:

1、parentnode.remove(node)

2、etree.strip_elements(html, ‘element_name’, with_tag=True/False)

但是在实际使用的时候如果要删除的node.tail不为空,则会把node.tail也删除掉,导致不必要的丢失,解决办法如下:

            parent = node.getparent()
                if parent is not None:
                    parent_text = re.sub('\s', '', get_child_text(parent))
                    text = node.tail if anchor.tail else ''
                    previous = node.getprevious()
                    if previous is not None:
                        previous.tail = (previous.tail or '') + text 
                    else:
                        parent.text = (parent.text or '') + text 
                    parent.remove(node)
                    break            

 通过在前序节点中保留node.tail,可以在删除node的同时,保留node.tail的内容。

转载于:https://www.cnblogs.com/chybot/p/5046258.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109211.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Nginx+DNS负载均衡「建议收藏」

    Nginx+DNS负载均衡「建议收藏」今天看了很多关于nginx负载均衡的博客,人家推荐的都是自己的ip来做负载,但是同样有说DNS负载均衡,刚开始我也是一头雾水,慢慢的分析才知道真正意义上的Nginx+DNS负载均衡。1.nginx负载均衡的5种策略(先了解这个后面的才好懂)轮询策略(默认)这种策略下每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。upstreambackserver{server192.168.0.14;server192.168.0.15;}指定

    2022年7月14日
    38
  • 服务器上的MSDTC不可用解决办法[通俗易懂]

    服务器上的MSDTC不可用解决办法[通俗易懂]MSDTC(分布式交易协调器),协调跨多个数据库、消息队列、文件系统等资源管理器的事务。该服务的进程名为Msdtc.exe,该进程调用系统MicrosoftPersonalWebServer和MicrosoftSQLServer。该服务用于管理多个服务器.位置:控制面板--管理工具--服务--DistributedTransactionCoordinator依存关系:R

    2025年7月15日
    5
  • 【强化学习】Q-Learning算法详解

    【强化学习】Q-Learning算法详解QLearning是强化学习算法中值迭代的算法,Q即为Q(s,a)就是在某一时刻的s状态下(s∈S),采取a(a∈A)动作能够获得收益的期望,环境会根据agent的动作反馈相应的回报rewardr,所以算法的主要思想就是将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取动作获得较大的收益。

    2022年10月4日
    3
  • ConcurrentModificationException异常解决办法

    1、在开发自己的第一款app,在操作存放子弹的ArrayList时,报出java.util.ConcurrentModificationException异常,因为该异常是非捕获型异常而且很少见,所以费了些时间才找到问题所在.查询了很多资料,终于调通了.原代码是这样的,synchronized(mCowBoys){ for(CowBoySprite cowBoy: mCowBoys)

    2022年3月9日
    42
  • 制作QQ微信支付宝三合一收款码

    制作QQ微信支付宝三合一收款码

    2021年11月5日
    62
  • Android注册表_手机注册表文件在哪里

    Android注册表_手机注册表文件在哪里/data/system/packages.plist com.google.android.ears100430/data/data/com.google.android.earsdefault3003,1028,1015com.qualcomm.timeservice100680/data/data/com.qualcomm.timeserviceplatformno

    2022年10月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号