替换字符串正则表达式python无法正常工作

时间:2018-02-28 15:57:43

标签: python regex

程序应该将每个标点字符替换为由两个空格包围的字符。

我试过了:

sent = re.sub('[!,\'!?.]',' \1 ', sent)    

但它只打印了一些奇怪的图标而不是那些标点字符

这是使用python 3完成的。

2 个答案:

答案 0 :(得分:1)

字符串" \ 1"被解释为ascii codepoint 1 \ x01。为防止这种情况发生,请使用原始字符串r' \ 1&#39 ;.另外,要使用反向引用,您应该使用括号。这是结果:

>>> sent = "!,\'!?."
>>> sent = re.sub(r'([!,\'!?.])',r' \1 ', sent)
>>> sent
" !  ,  '  !  ?  . "

答案 1 :(得分:0)

根据我原来的评论,您的替换是\1,但您从未创建过捕获组。如下所示,将您的正则表达式包围在()中。此外,您需要转义\或将其设为原始字符串。

re.sub(r"([,'!?.])", r' \1 ', sent) 

See code in use here