我有很多带有span类的html文件
span class="special-level-1"
span class="special-level-2"
span class="special-level-3"
span class="special-level-4"
span class="special-level-5"
我想删除其中一个span类中出现的每个*
。
我已经启动了一个python脚本
import sys
from lxml import etree
from lxml.html import parse
doc = parse(sys.argv[1])
span1 = doc.find('//span[@class="special-level-1"]')
span2 = doc.find('//span[@class="special-level-2"]')
span3 = doc.find('//span[@class="special-level-3"]')
span4 = doc.find('//span[@class="special-level-4"]')
span5 = doc.find('//span[@class="special-level-5"]')
span1.getparent().replace("\*", "")
span2.getparent().replace("\*", "")
span3.getparent().replace("\*", "")
span4.getparent().replace("\*", "")
span5.getparent().replace("\*", "")
print etree.tostring(doc)
但这不起作用。这个脚本可以被抢救吗?
答案 0 :(得分:2)
首先,您可以通过使用以下XPath表达式来认真简化代码:
//span[starts-with(@class, "special-level-")]
然后,使用xpath()
方法并将每个节点的text
值设置为replace()
的结果:
for elm in doc.xpath('.//span[starts-with(@class, "special-level-")]'):
elm.text = elm.text.replace("\*", "") # not sure why not just "*"
答案 1 :(得分:0)
它不起作用,因为字符串在python中是不可变的。
span5.getparent().replace("\*", "") #=> new string without the *
您必须重新分配新字符串才能使其正常工作