Python:删除HTML标签& HTML标签之间的文本

时间:2017-05-02 11:22:44

标签: python regex python-3.x

我正在尝试删除HTML标记(Python 3),但也尝试删除它们之间的文本。我的下面的代码片段似乎没有给我我正在寻找的结果,我在SO上找到的所有其他问题似乎只是看看删除HTML标签但保留HTML标签内的文本不是什么我正在尝试做。

当前代码

import re
...
price="12.00 <b>17.50</b>"
price=re.sub('<[^>]*>', '', price)

字符串

12.00 <b>17.50</b>

预期结果

12.00

当前结果

12.00 17.50

2 个答案:

答案 0 :(得分:2)

您也可以使用HTML解析器执行此操作,例如BeautifulSoup。我们的想法是找到所有标签并分解它们,然后得到剩下的东西:

In [8]: from bs4 import BeautifulSoup

In [9]: price = "12.00 <b>17.50</b>"

In [10]: soup = BeautifulSoup(price, "html.parser")

In [11]: for elm in soup.find_all():
    ...:     elm.decompose()
    ...:     

In [12]: print(soup)
12.00 

并且,这是一个着名的主题,解释了为什么不应该使用正则表达式处理HTML:

答案 1 :(得分:0)

一个可能的解决方案是逐个标记,以便exaple,清除所有内部#include <stdio.h> int findMaxPos(int *numbers, int length); int findMinPos(int *numbers, int length); int findMax(int *numbers, int length); int findMin(int *numbers, int length); int main() { int arr[] = { 100, 50, 20, 35 , 25, 22}; printf("Max number = %d\nMax pos = %d\nMin number = %d\nMin position = %d", findMax(arr, 6), findMaxPos(arr, 6), findMin(arr, 6), findMinPos(arr, 6)); getchar(); return 0; } int findMaxPos(int *numbers, int length) { int maxPos = 0; for (int i = 0; i < length; i++) { if (numbers[i] > numbers[maxPos]) maxPos = i; } return maxPos; } int findMinPos(int *numbers, int length) { int minPos = 0; for (int i = 0; i < length; i++) { if (numbers[i] < numbers[minPos]) minPos = i; } return minPos; } int findMax(int *numbers, int length) { int maxNr = numbers[0]; for (int i = 0; i < length; i++) { if (numbers[i] > maxNr); maxNr = numbers[i]; } return maxNr; } int findMin(int *numbers, int length) { int minNr = numbers[0]; for (int i = 0; i < length; i++) { if (numbers[i] < minNr); minNr = numbers[i]; } return minNr; }

<b></b>