строка питона заменяет цифры - PullRequest
3 голосов
/ 28 февраля 2012

Я пытаюсь заменить определенные части строки ниже.

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

Мне нужно удалить тег <td>, если есть '0.' (Десятичное вхождение).то есть вывод должен быть

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

Я пробовал это

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

, но не удалось.Может ли кто-нибудь, пожалуйста, помогите мне с этим.

Заранее спасибо

Ответы [ 3 ]

11 голосов
/ 28 февраля 2012

Хотя оба примера регулярных выражений работают, я бы посоветовал против , используя regexp.

Особенно, если данные представляют собой полный 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 голосов
/ 28 февраля 2012

Вы можете использовать регулярное выражение для проверки <td>, и, если оно совпадает, вы можете использовать re.sub(), чтобы заменить его тем, что вы когда-либо захотите.

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

где my_string содержит строку, с которой вы хотите работать, надеюсь, это поможет

2 голосов
/ 28 февраля 2012

Я бы сделал это с помощью регулярного выражения:

import re
s = "<td align='center'> 5 </td><td align='center'>0.00001</td>"
re.sub("<td align='center'>0.\d+</td>", "", s)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...