在Python中连接多个非空字符串

130 投票
3 回答
84731 浏览
提问于 2025-04-17 08:58

我有四个字符串,其中任何一个都可能是空的。我需要把它们合并成一个字符串,中间用空格隔开。如果我使用:

new_string = string1 + ' ' + string2 + ' ' + string3 + ' ' + string4

那么如果string1是空的,合并后的新字符串开头就会有一个空格。而如果string2string3都是空的,结果就会有三个空格。

我该怎么做才能在不需要空格的时候,轻松地把它们合并在一起呢?

3 个回答

-3

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们没有正确理解某些概念或者使用了不合适的代码。为了帮助大家更好地理解这些问题,我们可以参考一些常见的解决方案和建议。

首先,确保你对代码的每一部分都有清晰的理解。不要害怕去查阅资料或者请教别人,很多时候,问题的根源在于我们对某个功能或者语法的误解。

其次,调试是一个非常重要的技能。通过逐步检查代码,看看每一行的执行结果,可以帮助你找到问题所在。记得使用打印语句或者调试工具来观察变量的值和程序的运行流程。

最后,保持耐心和积极的态度。编程的过程就像解谜,有时候需要多次尝试和调整才能找到正确的解决方案。遇到困难时,不妨停下来休息一下,换个角度再来思考。

总之,编程是一项需要不断学习和实践的技能,遇到问题时要勇于探索和尝试,相信你会越来越熟练!

strings = ['foo','','bar','moo']
' '.join([x for x in strings if x is not ''])
'foo bar moo'
34

如果你确定这些字符串前后没有空格:

>>> strings = ['foo','','bar','moo']
>>> ' '.join(x for x in strings if x)
'foo bar moo'

否则:

>>> strings = ['foo ','',' bar', ' ', 'moo']
>>> ' '.join(x.strip() for x in strings if x.strip())
'foo bar moo'

如果任何字符串中间有空格,那你可能还需要更费劲。请说明一下你到底有什么。

301
>>> strings = ['foo','','bar','moo']
>>> ' '.join(filter(None, strings))
'foo bar moo'

在使用 filter() 这个函数时,如果你传入 None,它会把所有“假”的元素都去掉。

撰写回答