2012-09-17 12 views
221

リスト内の文字列項目を単一の文字列に連結する簡単な方法はありますか?リスト内の項目を文字列に連結する

str.join()関数を使用してリスト内のアイテムに参加できますか?

など。これは、入力['this','is','a','sentence']であり、これは所望の出力this-is-a-sentence

sentence = ['this','is','a','sentence'] 
sent_str = "" 
for i in sentence: 
    sent_str += str(i) + "-" 
sent_str = sent_str[:-1] 
print sent_str 
+9

' ' - '。 ' - '(文)に参加' – aland

答えて

461

使用join次のとおりです。

>>> sentence = ['this','is','a','sentence'] 
>>> '-'.join(sentence) 
'this-is-a-sentence' 
+7

は理解していなかった、何ことになって左側に?? –

+4

@LawrenceDeSouza結合する文字列。 [documentation](https://docs.python.org/2/library/stdtypes.html#string-methods)、[この回答](http://stackoverflow.com/questions/1876191/explain-python)を参照してください。 -join)これはもう少し詳しく説明しています。 –

+1

逆の操作が 'list.split(" ")'なので、私はある種の 'sentence.join(" ")'もうまく動作すると期待しています。これがPythonのリストのメソッドに追加されるのであれば、どんな考えですか? –

7

@Burhan Khalid's answerは良いですが、私はそれがこのような、より理解しやすいと思う:

from str import join 

sentence = ['this','is','a','sentence'] 

join(sentence, "-") 

join()の第2引数はオプションで、デフォルトは ""です。

EDIT:この関数は、文字列にPythonのリストに変換するために、より汎用的な方法は次のようになりPythonの3

+6

[この関数は2.xでは非推奨で、3.xでは削除されます](https://docs.python.org/2/library/string.html#deprecated-string-functions)その場合、私は提供された他の答え以上でこれを使用することをお勧めしません。 –

+0

@Mathew Greenこの回答とBurhan Khalidの答えは同じ機能をさまざまな方法で使っているので、彼の答えも非難されています。しかし、それを指摘していただきありがとうございました、3.xで参加する方法を見つけました。しかし、2.xを使用している場合、それは遠ざかっていません。 – SilentVoid

+1

しかし、Hisは廃止されていません。あなたのお勧めは、Lib/string.pyの関数を使用しています。これは、@BurhanKhalidの答えは廃止されていない組み込みの文字列メソッドを使用します。彼の答えは現在最も正確なものであり、これは2.xでは今のところ良いですが、 –

57

で削除されました:

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
>>> my_lst_str = ''.join(map(str, my_lst)) 
>>> print(my_lst_str) 
'12345678910' 
+1

入力が文字列のときにリストの理解が必要なのはなぜですか? – alvas

+4

この質問に対する答えのほとんどは、リストに文字列が含まれている場合を考慮しています。リストを列挙しないと 'map(str、my_lst)'で十分でしょう。 Mineはリストを文字列に変換する一般的な方法です。私の例では、リストは 'int'型ですが、文字列として表現できるどのような型でも構いません。 –

+0

@alvasありがとう、私の答えを更新しました。 –

15

初心者が why join is a string method

を知ることは非常に便利です最初は非常に奇妙ですが、その後は非常に便利です。

結合の結果は常に文字列ですが、接合すべき対象は、多くの種類(発電機、リスト、タプル、等)のものとすることができる

.joinそれは一度だけメモリを割り当てるため、高速です。古典的な連結よりも優れています。 extended explanation

これを学ぶと、非常に快適で、このように括弧を追加することができます。

>>> ",".join("12345").join(("(",")")) 
    '(1,2,3,4,5)' 

    >>> lista=["(",")"] 
    >>> ",".join("12345").join(lista) 
    '(1,2,3,4,5)' 
+0

おっと、クールです。私のupvoteを持っている:) – Blacksilver

関連する問題