【问题标题】:Add space after full stops句号后添加空格
【发布时间】:2017-05-12 10:32:53
【问题描述】:

在 python 中进行这个简单的文本修复的干净方法是什么 - 检查每个句号(除了最后一个)是否后面跟着空格。假设点后面没有空格是我们可以在输入字符串中得到的唯一可能的错误。

我正在这样做:

def textFix(text):
    result = re.sub('\.(?!\s)', '. ', text)
    if (result[len(result) - 1]) == ' ':
        return result[:-1]
    return result

【问题讨论】:

    标签: python regex replace text-processing


    【解决方案1】:

    你可以检查一下

    \.(?!\s|$)
    

    请参阅regex demo。它匹配后面没有空格或字符串结尾的点,即后面没有空格的任何非结尾点。

    或者,你也可以考虑

    \.(?=\S)
    

    匹配后跟非空白字符的任何点。

    another demo

    Python demo:

    import re
    rx = r"\.(?=\S)"
    s = "Text1. Text2.Text3."
    result = re.sub(rx, ". ", s)
    print(result)
    # => "Text1. Text2. Text3."
    

    【讨论】:

    • 顺便说一句,\.(?=\S) 更可取,因为它的工作速度更快,因为前瞻中不存在交替。
    • 感谢您的回答。但是如果句子包含像 98.6 这样的十进制值怎么办
    • @MadhurYadav 有几种方法,你可以使用re.sub(r"\.(?!(?<=\d\.)\d)(?=\S)", ". ", s),见demo
    【解决方案2】:

    你的技术看起来很完美。但也包括一个检查以避免在最后一个点之后添加空格 (.)

    \.(?!\s)(?!$)
    

    其中(?!$) 有助于确保. 后跟字符串结尾$ 不匹配,因此在其后不添加空格。

    Regex 101 demo

    【讨论】:

      猜你喜欢
      • 2021-04-08
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多