高效去除标点符号但保留“.com”
我找到了这个讨论:在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))