如何从单词结尾删除非字母字符

时间:2017-07-09 21:03:46

标签: python

当我有一个字符串" Mary's !!"我想得到" Mary's!",所以在字符串中每个单词的开头和/或结尾只删除一个非字母字符,而不是在单词的中间。

到目前为止,我在Python 3中已经有了这个。

import re
s = "Mary's!! string. With. Punctuation?" # Sample string 
out = re.sub(r'[^\w\d\s]','', s)
print(out)

输出:

"Marys string With Punctuation"

它会删除所有内容,而它应该是这样的:

"Mary's! string With Punctuation"

1 个答案:

答案 0 :(得分:1)

您可能要求旁边有空格(或字符串的开头/结尾):

re.sub(r'(\s|^)[^\w\d\s]|[^\w\d\s](\s|$)', r'\1\2', s)

或者,或者通过环顾:

re.sub(r'(?<!\S)[^\w\d\s]|[^\w\d\s](?!\S)', '', s)