Python将一个元素的列表转换为包含括号的字符串

问题描述:

如何将包含一个元素的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

避免依赖在默认__repr__()方法中,为了格式化字符串,它们可能会改变。

明确显示您的意图,而不是

print "('" + "', '".join(mylist) + "')" 

>>> ('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')