【问题标题】:Replacing string regex python not working [duplicate]替换字符串正则表达式python不起作用[重复]
【发布时间】:2018-08-08 13:47:03
【问题描述】:

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

我试过这个:

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

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

这是使用 python 3 完成的。

【问题讨论】:

  • 我们需要查看输入、输出和预期输出来帮助您。
  • @ctwheels 没有太多要补充的,应该是答案!
  • 这里的教训是在使用正则表达式时始终使用原始字符串

标签: python regex


【解决方案1】:

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

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

【讨论】:

  • 谢谢你成功了。
【解决方案2】:

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

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

See code in use here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-19
    • 2018-06-19
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 2023-04-09
    • 2022-11-07
    • 2012-10-08
    相关资源
    最近更新 更多