使用可选分隔符连接字符串和None/字符串

32 投票
3 回答
53424 浏览
提问于 2025-04-16 04:22

我基本上是在寻找Python中与这个VB/VBA字符串操作相对应的写法:

FullName = LastName & ", " + FirstName

在VB/VBA中,+&都是用来连接字符串的符号,但它们处理空值(Null)的方式不同:

"Some string" + Null ==> Null
"Some string" & Null ==> "Some string"

这个隐藏的特性让我写的第一行代码可以在必需的姓(LastName)和可选的名(FirstName)之间加上一个逗号和空格。如果名是空值(Null在VB/VBA中相当于Python的None),那么全名(FullName)就只会是姓,没有后面的逗号。

在Python中有没有一种简单的一行代码可以做到这一点呢?

技术说明:
gnibbler和eumiro的回答并不完全等同于VB/VBA中的+&。使用他们的方法时,如果名是一个空字符串("")而不是None,那么就不会有后面的逗号。在几乎所有情况下,这种结果比VB/VBA的结果更好,因为VB/VBA会在空的名后面加上一个逗号。

3 个回答

0

简单的三元运算符就可以解决这个问题:

>>> s1, s
('abc', None)
>>> print(s if s is None else s1 + s)
None
>>> print(s1 if s is None else s1 + s)
abc
128

下面这一行代码可以用来把多个不是None的元素连接在一起:

FullName = ', '.join(filter(None, (LastName, FirstName)))
31

这段内容是关于编程的讨论,主要涉及一些技术细节。虽然我不能直接回答问题,但我可以帮你理解其中的概念。

首先,提到的代码块

FullName = LastName + (", " + FirstName if FirstName else "")
可能包含了一些示例代码或特定的编程语法。对于初学者来说,理解这些代码是很重要的,因为它们展示了如何在实际编程中应用某些技术。

在编程中,很多时候我们需要解决特定的问题,或者实现某种功能。这个过程通常涉及到写代码、调试和测试。初学者可能会觉得这些步骤有点复杂,但只要多加练习,就会慢慢掌握。

总之,编程是一项需要不断学习和实践的技能,遇到问题时可以参考社区的讨论和示例代码,这样能帮助你更好地理解和解决问题。

撰写回答