这个问题在这里已有答案:
程序应该将每个标点字符替换为由两个空格包围的字符。
我试过这个:
sent = re.sub('[!,\'!?.]',' \1 ', sent)
但它只打印了一些奇怪的图标而不是那些标点字符
这是使用python 3完成的。
字符串“\ 1”被解释为ascii codepoint 1 \ x01。要防止这种情况发生,请使用原始字符串r'\ 1'。另外,要使用反向引用,您应该使用括号。这是结果:
>>> sent = "!,\'!?."
>>> sent = re.sub(r'([!,\'!?.])',r' \1 ', sent)
>>> sent
" ! , ' ! ? . "
根据我原来的评论,您的替代品是\1
,但您从未创建过捕获组。如下所示,在()
中围绕你的正则表达式。此外,您需要转义\
或使其成为原始字符串。
re.sub(r"([,'!?.])", r' \1 ', sent)