没有正则表达式,在Python中将字符串中的多个空格减少为一个

前端之家收集整理的这篇文章主要介绍了没有正则表达式,在Python中将字符串中的多个空格减少为一个前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在回答 this问题时,我怀疑如何在不使用正则表达式的情况下将字符串中的多个空格减少到一个.说字符串如下:

s = "Mary    had    a little lamb"

我想到的第一个解决方案是

' '.join(s.split())

但是如果字符串是这样的话,这将不会保留前导和尾随空格

s = "    Mary    had    a little lamb  "

为了保存前导和尾随空格(如果存在),我想出了一个稍微不同的方法,我在字符串的开头和结尾添加了一个虚拟字符(在本例中为’ – ‘),我后来删除了分裂.代码如下:

' '.join(('-' + s + '-').split())[1:-1]

有没有其他内置功能或其他pythonic方式来做到这一点?

编辑:
通过保留前导和尾随空格,我的意思是,如果在字符串的开头和/或末尾有多个空格,这些多个空格也应该减少到一个空格

解决方法

你可以使用类似的东西:

from itertools import groupby

s = "    Mary    had    a little lamb  "
res = ''.join(' ' if is_space else ''.join(chars) for is_space,chars in groupby(s,str.isspace))
#  Mary had a little lamb

猜你在找的正则表达式相关文章