有效地删除标点而不是“.com”

时间:2011-03-18 16:19:56

标签: python string

我找到了这个帖子:Best way to strip punctuation from a string in Python

但希望能想出办法来做到这一点,除非不删除链接中的句号。所以如果字符串是

I love using stackoverflow.com on Fridays, Saturdays and Mondays!

它将返回

I love using stackoverflow.com on Fridays Saturdays and Monday

事实上,理想情况下,我可以传入一个常见的链接结尾列表,如.com,.net,.ly等。

3 个答案:

答案 0 :(得分:5)

您可以使用否定预测:

[,!?]|\.(?!(com|org|ly))

答案 1 :(得分:3)

约定建议您在. , !之后使用空格或类似的内容。如果你可以指望正确的键入,你可以创建一个正则表达式,只有当它们后跟空格时才会删除这些字符。 (或者至少用 fullstop character 这样做。)

以下正则表达式将识别这些:

[.,!?-](\s|$)

另一种可能性是使用合法TLD名称列表。 www.之类的前缀或@之类的其他模式,可以保留原始标点符号。

答案 2 :(得分:1)

这个怎么样(这正是Felix Kling已经建议的那样):

original = 'I love using stackoverflow.com on Fridays, Saturdays and Mondays!'
unwanted_chars = ',.!?;:'

bits = original.split()
cleaned_up = ' '.join([bit.strip(unwanted_chars) for bit in bits])
print cleaned_up
# I love using stackoverflow.com on Fridays Saturdays and Mondays

编辑:

ps:'cleaning_up'将是depunctuated字符串