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

Python 使用可选分隔符连接字符串和无/字符串,python,string,Python,String,我基本上是在寻找与此VB/VBA字符串操作等效的Python: FullName = LastName & ", " + FirstName 在VB/VBA中,+和&都是串联运算符,但它们在处理空值的方式上有所不同: "Some string" + Null ==> Null "Some string" & Null ==> "Some string" 这个隐藏特性允许我编写的第一行代码在所需的LastName和可选的FirstName值之间包含逗号和空格。如果F

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

FullName = LastName & ", " + FirstName
在VB/VBA中,
+
&
都是串联运算符,但它们在处理空值的方式上有所不同:

"Some string" + Null ==> Null
"Some string" & Null ==> "Some string"
这个隐藏特性允许我编写的第一行代码在所需的LastName和可选的FirstName值之间包含逗号和空格。如果FirstName为Null(Null是Python的None的VB/VBA等价项),则FullName将设置为LastName,后面不带逗号

在Python中是否有一种单行惯用方法来实现这一点

技术说明:

gnibbler和eumiro的答案并不完全等同于VB/VBA的
+
&
。使用他们的方法,如果FirstName是一个空字符串(“”),而不是None,那么后面就不会有逗号。在几乎所有情况下,这都比VB/VBA的结果更可取,后者是添加带有空白名字的尾随逗号。

以下行可用于连接更多非无元素:

FullName = LastName + (", " + FirstName if FirstName else "")
FullName = ', '.join(filter(None, (LastName, FirstName)))

简单的三元运算符可以:

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

gnibbler's是最清晰、最好的一款简单的concat。但这正是我加入一个完整的列表所需要的。这比公认的答案要清楚得多,在我的脑海中也更像pythonic。PyCharm在这行警告:
expected type'Iterable[str]',改为'Iterator[dict]
me谢谢你10年的帖子!对于两个字符串的单个串联,这是最清晰的解决方案。