如何在Python中替换字符串中的标点符号?

reg*_*ter 17 python string replace

我想用Python中的字符串中的"" 替换(而不是删除)所有标点字符.

是否有以下口味的效果?

text = text.translate(string.maketrans("",""), string.punctuation)
Run Code Online (Sandbox Code Playgroud)

Ben*_*ork 43

这个答案适用于Python 2,仅适用于ASCII字符串:

字符串模块包含两个可以帮助您的东西:标点符号列表和"maketrans"函数.以下是如何使用它们:

import string
replace_punctuation = string.maketrans(string.punctuation, ' '*len(string.punctuation))
text = text.translate(replace_punctuation)
Run Code Online (Sandbox Code Playgroud)

  • 这是最快的解决方案,轻松击败正则表达式选项. (2认同)

Gre*_*gor 14

改进的解决方案来自Best方法,从Python中删除字符串中的标点符号

import string
import re

regex = re.compile('[%s]' % re.escape(string.punctuation))
out = regex.sub(' ', "This is, fortunately. A Test! string")
# out = 'This is  fortunately  A Test  string'
Run Code Online (Sandbox Code Playgroud)

  • 您可以从string.punctuation(反过来只是包含所有标点符号的字符串)中删除撇号。`string.punctuation.replace(“'”,“”)`导致`'!“#$%&()* +,-。/ :; <=>?@ [\\] ^ _`{|} 〜'` (2认同)