高效去除标点符号但保留“.com”

2 投票
3 回答
832 浏览
提问于 2025-04-16 13:58

我找到了这个讨论:在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 个回答

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

补充:

另外,'cleaned_up'就是去掉标点符号后的字符串

3

一般来说,建议在 .,! 这些符号后面加一个空格。如果你能保证输入是正确的,可以用一种叫做正则表达式的工具,来去掉这些符号,前提是它们后面有空格。(或者至少可以对 句号 这样做。)

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

另外一种方法是使用一个合法的顶级域名(TLD)名称列表,比如 www. 这样的前缀,或者像 @ 这样的模式,它们周围保留了原来的标点符号。

5

你可以使用负向前瞻:

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

撰写回答