我有以下字符串
t1 = 'hello, how are you ?'
我只想得到这个:
t2 = 'hello how are you'
所以我试图使用sub()和这样的否定正则表达式:
t2 = re.sub(r'^([a-z])','',t1)
但我不能成功。
删除标点符号的最佳方法是什么?
由于
答案 0 :(得分:1)
尝试这样的事情:
re.sub("[^a-zA-Z ]","",'hello, how are you ?').rstrip()
在删除问号后,rstrip可以摆脱留下的尾随空格。
当然,这只是你真的想要使用正则表达式。 @ f43d65链接的问题中的任何一种方式都可能正常工作,也可能更快。
答案 1 :(得分:1)
删除标点符号的最佳方法是不使用正则表达式。
# Python 3
import string
transmapping = str.maketrans(None, None, string.punctuation)
t1 = 'hello, how are you ?'
t2 = t1.translate(transmapping).strip()
以下是str.maketrans
和str.translate
# Python 2
import string
t1 = 'hello, how are you ?'
t2 = t1.translate(None, deletechars=string.punctuation).strip()
以下是string.maketrans
的Python2文档(此处未使用)和str.translate
使用正则表达式进行字符串转换有点像prybar那样使用反铲。这是巨大的,笨拙的,如果你不这样做,可能会犯错误 juuuust 。
答案 2 :(得分:0)
假设您只想删除最后一个标点符号并且它是一个问号:
/ [\?] $ /
这就是说删除字符串末尾括号中的任何内容。