当我有一个字符串" 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"
答案 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)