2010-09-20 53 views
11

我基本上是尋找一個爲Python相當於此VB/VBA字符串操作加入串和無/字符串:使用可選的分隔符

FullName = LastName & ", " + FirstName 

在VB/VBA +&都連接操作,但它們之間的區別在如何處理空值:

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

這個隱藏功能允許的第一行代碼我寫的,包括所需的姓氏和名字可選值之間的逗號和空格。如果FirstName是Null(Null是Python的None的VB/VBA equiv),FullName將被設置爲LastName而不帶尾隨逗號。

在Python中是否有一種單線慣用的方式來做到這一點?

技術說明
gnibbler的和eumiro的答案是沒有嚴格的VB/VBA的+&的等價物。使用他們的方法,如果FirstName是空字符串(「」)而不是None,則不會有尾隨逗號。在幾乎所有情況下,這將比VB/VBA的結果更可取,後者將以空白的FirstName添加尾隨逗號。

回答

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

我覺得這是最可讀的方式。 – mwolfe02 2010-09-20 15:11:29

+0

對於兩個字符串的單個連接,這是最明智的解決方案。 – deed02392 2014-05-28 23:04:25

50

以下行可以用來連接多個不相無元素:

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

gnibbler's是最清晰和最好的一個簡單的concat。但是,這個正是我加入整個名單時所需要的。 – CrazyPyro 2012-07-06 18:01:13

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