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

问题描述 投票:-2回答:2

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

我试过这个:

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

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

这是使用python 3完成的。

python regex
2个回答
1
投票

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

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

0
投票

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

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

See code in use here

© www.soinside.com 2019 - 2024. All rights reserved.