替换单个空格而不替换多个空格(Python)

时间:2018-10-26 19:09:51

标签: python

然而,这似乎是一项琐碎的任务,我找不到使用python进行此操作的解决方案。

给出以下字符串:

"Lorem/ipsum/dolor/sit         amet consetetur"

我想输出

"Lorem/ipsum/dolor/sit         ametconsetetur"

因此,删除ametconsetetur之间的单个空格。

使用.replace(" ","")替换所有空格,给我:

"Lorem/ipsum/dolor/sitametconsetetur"

这不是我想要的。我该怎么解决?

3 个答案:

答案 0 :(得分:3)

使用正则表达式和单词边界:

>>> s="Lorem/ipsum/dolor/sit         amet consetetur"
>>> import re
>>> re.sub(r"\b \b","",s)
'Lorem/ipsum/dolor/sit         ametconsetetur'
>>>

此技术还可以处理更常见的情况:

>>> s="Lorem/ipsum/dolor/sit         amet consetetur      adipisci velit"
>>> re.sub(r"\b \b","",s)
'Lorem/ipsum/dolor/sit         ametconsetetur      adipiscivelit'

对于开始和结束空间,您必须稍加努力,但是仍然可以做到:

>>> s=" Lorem/ipsum/dolor/sit         amet consetetur      adipisci velit "
>>> re.sub(r"(^|\b) (\b|$)","",s)
'Lorem/ipsum/dolor/sit         ametconsetetur      adipiscivelit'

只是为了好玩,最后一个变种:使用re.split并使用多个空格分隔,使用组保留拆分的char,然后再次加入字符串,仅当字符串中包含一些非空格时才删除空格它:

"".join([x if x.isspace() else x.replace(" ","") for x in re.split("( {2,})",s)])

(我想这是由于创建列表和加入而较慢)

答案 1 :(得分:1)

s[::-1].replace(' ', '', 1)[::-1]
  • 反转字符串
  • 删除第一个空格
  • 反转字符串

答案 2 :(得分:0)

VARCHAR(100)