2012-02-28 123 views
3

我想替換下面的字符串的某些部分。python字符串替換數字

'''<td align="center"> 5 </td> <td> align="center"> 0.0001 </td>''' 

我需要刪除<td>標籤,如果有一個 '0'。(decmial發生)。即輸出應該是

我已經試過這

data = ' '.join(data.split())<br> 
l = data.replace('<td align="center"> 0.r"\d" </td>', "") 

,但沒有成功。任何人都可以幫助我做到這一點。

在此先感謝

+5

見http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work – NPE 2012-02-28 09:55:13

+1

爲什麼有些用戶不接受答案?實際上,爲什麼有的問題被問及哪些問題沒有被接受呢?在問一個問題後,肯定不會有很多人永遠失去了進入互聯網的機會嗎? – 2012-02-28 10:14:22

+0

[義務閱讀](http://stackoverflow.com/a/1732454/566644) – 2012-02-28 12:31:56

回答

11

雖然兩者的正則表達式的例子工作,我會使用正則表達式指點

特別是如果數據是一個完整的HTML文檔,你應該去HTML感知的解析器,如lxml.html如:

from lxml import html 
t = html.fromstring(text) 
tds = t.xpath("table/tbody/tr[2]/td") 
for td in tds: 
    if tds.text.startswith("0."): 
     td.getparent().remove(td) 
text = html.tostring(t) 
2

我會用正則表達式做到這一點:

import re 
s = "<td align='center'> 5 </td><td align='center'>0.00001</td>" 
re.sub("<td align='center'>0.\d+</td>", "", s) 
2

你可以使用正則表達式來檢查<td>,如果匹配,你可以使用re.sub()用來替換任何你想要的。

pattern = '\"<td align=\"center\"> 0.[0-9]+ </td>\"' 
p = re.compile(pattern) 
p.sub('', my_string) 

其中my_string包含要操作的字符串,希望這有助於