替换字符串regex python不起作用

2024-03-29 02:15:07 发布

您现在位置:Python中文网/ 问答频道 /正文

程序应该将这些标点字符中的每一个都替换为被两个空格包围的字符。你知道吗

我试过这个:

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

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

这是使用python3完成的。你知道吗


Tags: 程序re字符python3sent图标空格标点符号
2条回答

根据我最初的评论,您的替代者是\1,但您从未创建过捕获组。按照下面的建议将regex包围在()中。此外,还需要转义\或使其成为原始字符串。你知道吗

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

See code in use here

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

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

相关问题 更多 >