在Python中使用正则表达式删除空格

在Python中使用正则表达式删除空格,python,regex,Python,Regex,我有一个很长的字符串,由句子组成,其中一些单词嵌入了HTML标记,如下所示: 加拿大房价下跌;但不是在美国。为什么会这样,为什么只在加拿大? 我希望删除由HTML标记(本例中为分号和句号)括起的所有标点之前的前导空格。因此,期望的输出是: 加拿大房价下跌;但不是在美国。为什么会这样,为什么只在加拿大? 如何在regex中实现这一点?我尝试使用string.replace(),但是有太多不同类型的标记(如下面所示),标点符号可以包含在其中,因此我需要无数的.replace()语句。HTML标记中还

我有一个很长的字符串,由句子组成,其中一些单词嵌入了HTML标记,如下所示:

加拿大房价下跌;但不是在美国。为什么会这样,为什么只在加拿大?

我希望删除由HTML标记(本例中为分号和句号)括起的所有标点之前的前导空格。因此,期望的输出是:

加拿大房价下跌;但不是在美国。为什么会这样,为什么只在加拿大?

如何在regex中实现这一点?我尝试使用string.replace(),但是有太多不同类型的标记(如下面所示),标点符号可以包含在其中,因此我需要无数的.replace()语句。HTML标记中还有不同的字体颜色和不同的字体背景颜色

<strike><font color="red">.</font></strike>
<strike><font color="red">:</font></strike>
<strike><font color="red">,</font></strike>
<b><font color="red">;</font></b>
<b><font color="red">.</font></b>
<b><font color="red">:</font></b>
<b><font color="red">,</font></b>
<strike><font color="black">.</font></strike>
<strike><font color="black">:</font></strike>
<strike><font color="black">,</font></strike>
<b><font color="black">;</font></b>
<b><font color="black">.</font></b>
<b><font color="black">:</font></b>
<b><font color="black">,</font></b>
...
。
:
,
;
.
:
,
.
:
,
;
.
:
,
...

您不想使用正则表达式来实现此目的。但如果你说这是唯一的出路,你可以这样做:

html_string = re.sub(r" +(<[\w '\"=<>]+(?=[.;,:]</\w+>))", r"\g<1>", html_string)

html\u string=re.sub(r“+(正则表达式不擅长匹配平衡结构。请使用类似BeautifulSoup的html解析器。