程序应该将每个标点字符替换为由两个空格包围的字符。
我试过了:
sent = re.sub('[!,\'!?.]',' \1 ', sent)
但它只打印了一些奇怪的图标而不是那些标点字符
这是使用python 3完成的。
答案 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)