2016-01-13 22 views
1

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

我想刪除每一個*裏面這些跨度類之一發生。

我已經開始一個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

首先,你能認真地簡化代碼,使用以下XPath表達式:

//span[starts-with(@class, "special-level-")] 

然後,使用xpath()方法並將每個節點的值設置爲replace()的結果:

for elm in doc.xpath('.//span[starts-with(@class, "special-level-")]'): 
    elm.text = elm.text.replace("\*", "") # not sure why not just "*" 
+0

感謝您的幫助!我對python很新穎(正如'\ *'而不是'*'所證明的那樣)。 –

0

它不起作用,因爲在python中字符串是不可變的

span5.getparent().replace("\*", "") #=> new string without the * 

您必須重新分配新的字符串爲了這個工作

相關問題