是否可以从每个span类中删除特定字符?

时间:2016-01-13 05:54:04

标签: python html

我有很多带有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)

但这不起作用。这个脚本可以被抢救吗?

2 个答案:

答案 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 *

您必须重新分配新字符串才能使其正常工作