我想在Python的字符串中用<“替换(而不是删除)所有标点字符。
是否有以下风味的效果?
text = text.translate(string.maketrans("",""), string.punctuation)
答案 0 :(得分:42)
这个答案适用于Python 2,仅适用于ASCII字符串:
字符串模块包含两个可以帮助您的东西:标点字符列表和“maketrans”函数。以下是如何使用它们:
import string
replace_punctuation = string.maketrans(string.punctuation, ' '*len(string.punctuation))
text = text.translate(replace_punctuation)
答案 1 :(得分:14)
来自Best way to strip punctuation from a string in 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'
答案 2 :(得分:1)
有一个更强大的解决方案,它依赖于正则表达式排除,而不是通过大量的标点符号来包括。
import re
print(re.sub('[^\w\s]', '', 'This is, fortunately. A Test! string'))
#Output - 'This is fortunately A Test string'
正则表达式可以捕获不是字母数字或空格字符的任何内容
答案 3 :(得分:0)
替换为''?
。
将所有;
翻译成''并删除所有;
之间的区别是什么?
以下是删除所有;
:
s = 'dsda;;dsd;sad'
table = string.maketrans('','')
string.translate(s, table, ';')
你可以用翻译替换。
答案 4 :(得分:0)
以我的具体方式,我删除了“+”和“&amp;”来自标点符号列表:
all_punctuations = string.punctuation
selected_punctuations = re.sub(r'(\&|\+)', "", all_punctuations)
print selected_punctuations
str = "he+llo* ithis& place% if you * here @@"
punctuation_regex = re.compile('[%s]' % re.escape(selected_punctuations))
punc_free = punctuation_regex.sub("", str)
print punc_free
结果:他+ llo ithis&amp;如果你在这里的地方
答案 5 :(得分:0)
此解决方法在python 3中有效:
import string
ex_str = 'SFDF-OIU .df !hello.dfasf sad - - d-f - sd'
#because len(string.punctuation) = 32
table = str.maketrans(string.punctuation,' '*32)
res = ex_str.translate(table)
# res = 'SFDF OIU df hello dfasf sad d f sd'