Python正则表达式:仅限内部重复出现的空格

2024-04-26 09:31:36 发布

您现在位置:Python中文网/ 问答频道 /正文

给定python上的以下字符串:

    foo    bar

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

    foo bar

我尝试了下面的正则表达式,结果通常是无意的结果

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

使用regex是没有办法做到这一点的吗

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


Tags: 文件the字符串txt编辑whichfoobar
1条回答
网友
1楼 · 发布于 2024-04-26 09:31:36

您可以使用查看regex:

>>> s = '    foo    bar    '
>>> print re.sub(r'(?<=\S)\s+(?=\S)', ' ', s)
    foo bar
  • (?<=\S):lookback断言前面没有空格
  • \s+:匹配1+个空格
  • (?=\S):Lookahead断言前面没有空格

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

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

相关问题 更多 >