2012-02-28 3 views
3

Я пытаюсь заменить некоторые части строки ниже.python string заменить цифры

'''<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-do-accept-rate-work – NPE

+1

Почему некоторые пользователи не принимают ответы? На самом деле, почему есть * когда-либо * заданные вопросы, которые затем не принимаются? Неужели не может быть много людей, которые, задав вопрос, полностью потеряли доступ к Интернету навсегда? –

+0

[Обязательное чтение] (http://stackoverflow.com/a/1732454/566644) –

ответ

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 содержит строку, которую вы хотите работать на, надеюсь, что это помогает

Смежные вопросы