【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
似乎应该有一个比以下方法更简单的方法:
import string
s = "string. With. Punctuation?" # Sample string
out = s.translate(string.maketrans("",""), string.punctuation)
在那儿?
#1楼
我喜欢使用这样的功能:
def scrub(abc):
while abc[-1] is in list(string.punctuation):
abc=abc[:-1]
while abc[0] is in list(string.punctuation):
abc=abc[1:]
return abc
#2楼
如果您知道正则表达式,就足够简单了。
import re
s = "string. With. Punctuation?"
s = re.sub(r'[^\w\s]','',s)
#3楼
对于Python 3 str
或Python 2 unicode
值, str.translate()
仅采用字典; 在该映射中查找代码点(整数),并删除所有映射为None
内容。
然后,要删除(某些?)标点符号,请使用:
import string
remove_punct_map = dict.fromkeys(map(ord, string.punctuation))
s.translate(remove_punct_map)
dict.fromkeys()
类方法使创建映射变得很简单,根据键序列将所有值设置为None
。
要删除所有标点符号,而不仅仅是ASCII标点符号,您的表需要更大一些。 参见JF Sebastian的答案 (Python 3版本):
import unicodedata
import sys
remove_punct_map = dict.fromkeys(i for i in range(sys.maxunicode)
if unicodedata.category(chr(i)).startswith('P'))
#4楼
myString.translate(None, string.punctuation)
#5楼
如果您对re家族更加熟悉,则不一定会更简单,但会采用另一种方式。
import re, string
s = "string. With. Punctuation?" # Sample string
out = re.sub('[%s]' % re.escape(string.punctuation), '', s)
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3154126