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

2024-04-24 01:14:38 发布

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

这看起来像是一个琐碎的任务,但是,我找不到一个解决方案来使用python完成这项工作。你知道吗

给定以下字符串:

"Lorem/ipsum/dolor/sit         amet consetetur"

我想输出

"Lorem/ipsum/dolor/sit         ametconsetetur"

因此,删除ametconsetetur之间的单个空白。你知道吗

使用.replace(" ","")替换所有空格,得到:

"Lorem/ipsum/dolor/sitametconsetetur"

这不是我想要的。我怎样才能解决这个问题?你知道吗


Tags: 字符串解决方案空白replace空格ipsumloremdolor
3条回答
s[::-1].replace(' ', '', 1)[::-1]
  • 反转字符串
  • 删除第一个空格
  • 把绳子倒回去
import re
a="Lorem/ipsum/dolor/sit         amet consetetur"
print(re.sub('(\w)\s{1}(\w)',r'\1\2',a))

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

>>> 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和多个空格分隔,使用组保留拆分的字符,然后再次连接字符串,仅当字符串中有一些非空格时才删除空格:

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

(我想这会因为创建列表和联接而变慢)

相关问题 更多 >