提问者:小点点

我正在尝试使用正则表达式获取以<开头并以>结尾的子字符串并删除它们以创建一个新字符串[重复]


所以我有一堆绳子从我的安基甲板上拉下来。如下所示的字符串:

我想删除所有类似“”的子字符串

彼女

并把它变成:

<代码>彼女は看護婦です。

我需要为整个句子列表执行此操作。我尝试使用以下代码:

import re

s = '彼女は<font color="#ff0000"><font color="#ff0000">看護婦</font></font>です。'
x = re.sub(r'\<.+\>','',s)
print(x)

我得到以下输出:

<代码>彼女はです。

什么时候应该

<代码>彼女は看護婦です。

本质上,它是在中间传递的,而不仅仅是去掉每个实例。所以本质上,我想做的是分析5400个句子,把它们变成没有其他东西的句子。

取列表中的一小部分,就像这样:

さあ、最上級の感謝を贈るぞ

その偉大な画家の<font color="#ff0000"><font color="#ff0000">傑作</font></font>が壁にさかさまにかかっているを見て、彼は驚いた。

彼はキリスト教に<font color="#ff0000"><font color="#ff0000">偏見</font></font>を抱いている

人種的偏見のない人はいないという事実は否定できない。

ボクは旅の途中で近くを通りかかったところをシド王子にここまで誘導されたゴロ

生まれたての稚魚みたいにフラフラと…<br>

滝壺まで泳いで行って一気に滝登りだ!

光っている印が神獣ヴァ・ルッタを制御する端末

<font color="#ff0000"><font color="#ff0000">芝生</font></font>が素敵にみえる。

并将其转换为:

さあ、最上級の感謝を贈るぞ
    
その偉大な画家の傑作が壁にさかさまにかかっているを見て、彼は驚いた。
    
彼はキリスト教に偏見を抱いている
    
人種的偏見のない人はいないという事実は否定できない。
    
ボクは旅の途中で近くを通りかかったところをシド王子にここまで誘導されたゴロ
    
生まれたての稚魚みたいにフラフラと…
    
滝壺まで泳いで行って一気に滝登りだ!
    
光っている印が神獣ヴァ・ルッタを制御する端末
    
芝生が素敵にみえる。

抱歉,我刚开始编码,所以这对我来说还是有点困难


共2个答案

匿名用户

你的误解在于你用来匹配和替换的模式<代码>r'\

相反,通过将 限定符添加到 . 模式,使您的模式“懒惰”:

import re

s = '彼女は<font color="#ff0000"><font color="#ff0000">看護婦</font></font>です。'
x = re.sub(r'\<.+?\>','',s)
print(x) # 彼女は看護婦です。

回复。它| Regex101

然而,对于这种类型的活动,您确实应该使用适当的HTML解析器。Regex通常被认为不是处理HTML内容的好工具。请参见Juan C对这个问题的回答,以了解如何实现这一目标的示例。

匿名用户

如果您不介意使用其他库,您可以使用 BeautifulSoup 轻松地将 html 代码解析为字符串:

from bs4 import BeautifulSoup

s = '彼女は<font color="#ff0000"><font color="#ff0000">看護婦</font></font>です。'

soup = BeautifulSoup(s, 'lxml')

print(soup.text)

输出:

Out[29]: '彼女は看護婦です。'