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

时间:2010-09-20 14:08:54

标签: python string

我基本上是在寻找与此VB / VBA字符串操作相当的Python:

FullName = LastName & ", " + FirstName

在VB / VBA中+&都是连接运算符,但它们处理Null值的方式不同:

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

这个隐藏的功能允许我编写的第一行代码包含所需LastName和可选FirstName值之间的逗号和空格。如果FirstName为Null(Null是Python的无效的VB / VBA),则FullName将设置为LastName,不带尾随逗号。

在Python中有没有一种惯用的方法呢?

技术说明
gnibbler和eumiro的答案并不完全等同于VB / VBA的+&。使用他们的方法,如果FirstName是空字符串(“”)而不是None,则不会有尾随逗号。在几乎所有情况下,这都优于VB / VBA的结果,即使用空白的FirstName添加尾随逗号。

3 个答案:

答案 0 :(得分:66)

以下行可用于连接更多not-None元素:

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

答案 1 :(得分:17)

FullName = LastName + (", " + FirstName if FirstName else "")

答案 2 :(得分: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