2016-07-04 48 views
1

如何將包含一個元素的python列表轉換爲包含括號的字符串? 對於一個以上的元素,它很容易對我來說,纔剛剛使用tuple(list['a','b'])返回的元組('a','b')但如果元素之一,它返回爲('a',),而是我想回到('a') 樣本:Python將一個元素的列表轉換爲包含括號的字符串

mylist = ["a", " b"] 
print tuple([s.strip() for s in mylist]) 
>> ('a', 'b') 

mylist = ["a"] 
print tuple([s.strip() for s in mylist]) 
>> ('a',) #rather I want to return ('a') 
+0

'('a')'''a'' - 是你想要的嗎?單元素元組包含逗號以避免模糊。 –

+0

'('a')' - 帶括號 – DougKruger

回答

4

避免依賴在默認__repr__()方法中,爲了格式化字符串,它們可能會改變。

明確顯示您的意圖,而不是

print "('" + "', '".join(mylist) + "')" 
1
>>> ('a') == 'a' 
True 

如果你不打算使用的單個元素的元組,然後在括號只是分組括號(不是容器),和他們贏得了」 t 就像你想要它們一樣,除非你將它們作爲字符串的一部分與a一起包含或定義一個自定義打印功能。

使用自定義打印功能,你能保持從列表轉換爲元組(即t = tuple(mylist))的是,還可以使用單元素元組的是:

def tuple_print(t): 
    print(str(t).replace(',', '') if len(t) == 1 else t) 

試驗

>>> def tuple_print(t): 
...  print(str(t).replace(',', '') if len(t) == 1 else t) 
... 
>>> mylist = ["a"] 
>>> t = tuple(mylist) 
>>> t 
('a',) 
>>> tuple_print(t) 
('a') 
>>> t = ('a', 'b') 
>>> tuple_print(t) 
('a', 'b') 
相關問題