我正在尝试删除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
答案 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>