如何使用正则表达式或其他方式从python的文本(字符串)中删除“ [音频不清晰]”?

时间:2019-01-06 14:30:21

标签: python regex string

我们有一些文本(字符串)包含描述(不属于所产生的语音),例如[听不清]和[笑声]。我们想从字符串中删除那些元素。它们始终具有相同的结构,并用[...]编写。 示例:

text="I think I could pretty much say, Mike, most of them have become stars, if not all. Because you won. Winning is a wonderful thing. [Laughter] So I thought what I'd do is go around the room"

这是我们到目前为止尝试过的:

 text2=re.sub('[.*]', '', text)

text2=re.sub('/[.*/]', '', text)

如果文本中有两个或多个这些元素[听不清],依此类推,它将删除这些元素之间的所有文本。那不应该发生,我们不知道如何避免。第一个示例有时会删除。有时没有,那也令人困惑。 我们是python初学者:)

1 个答案:

答案 0 :(得分:2)

您正在使用重复运算符(*)的贪婪版本。因此,正则表达式将匹配最长的匹配字符串。还有一个非贪婪的运算符*?与最短的字符串匹配。贪婪是好的,但有时非贪婪更好。以我的个人经验,我比贪婪的运算符更频繁地使用非贪婪的运算符。

尝试一下:

text2=re.sub(r'\[.*?\]', '', text)

与您的版本相比,我将您的正斜杠更改为反斜杠以转义特殊字符,并且我使用了原始字符串r'string'来防止python反斜杠和正则表达式反斜杠之间发生冲突。

A.M。有很好的正则表达式教程。 Kuchling。 https://docs.python.org/2/howto/regex.html。此处将对这三个更改进行更详细的说明。