【问题标题】:Python Regex: Internal reoccurring spaces onlyPython Regex:仅限内部重复出现的空格
【发布时间】:2018-04-06 01:11:28
【问题描述】:

在 python 上给出以下字符串:

    foo    bar

我一直在尝试仅删除 'foo' 和 'bar' 之间的重复空格,并将其替换为仅一次空格,但留下第一个缩进/空格。

    foo bar

我已经尝试了以下正则表达式,但通常会导致意外结果。

[\s]+     # which selects all spaces
foobar
[\w][\s]+ # which selects the first characters and following spaces
    fobar

有没有办法使用正则表达式来完成这个?

编辑:对不起!可能不清楚,但字符串可能会有所不同,因为我的主要目标是只删除句子中重复出现的空格而不影响缩进! 再次编辑:在 StackOverflow 上已经提出的其他问题之间的区别在于,我希望从一开始就保留空格,而不是删除所有空格。 这个项目是读取带有缩进的txt文件并删除txt文件中的所有空格。

【问题讨论】:

    标签: python regex


    【解决方案1】:

    您可以使用正则表达式环顾四周:

    >>> s = '    foo    bar    '
    >>> print re.sub(r'(?<=\S)\s+(?=\S)', ' ', s)
        foo bar
    
    • (?&lt;=\S): 向后断言我们之前没有空格
    • \s+:匹配 1+ 个空格
    • (?=\S):提前断言我们前面没有空间

    或者,您也可以使用捕获组:

    >>> print re.sub(r'(\S)\s+(\S)', r'\1 \2', s)
        foo bar
    

    【讨论】:

    • 谢谢! “(?
    • 没错,re.sub(r'(?&lt;=\S)\s+', ' ', s) 会起作用
    猜你喜欢
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2017-09-14
    • 2019-05-15
    • 2012-10-19
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    相关资源
    最近更新 更多