2016-07-04 2 views
1

1つの要素を含むpythonリストを括弧で文字列に変換するには?複数の要素については 、私はただ単にタプル('a','b')として返すtuple(list['a','b'])を使用するが、要素が1であれば、それは('a',)として返すのではなく、私は('a') サンプルを返すようにしたいためにその簡単:Pythonは1つの要素のリストをブラケット付きの文字列に変換します

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') 
関連する問題