我找到了这个帖子: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等。
答案 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字符串