2017-07-31 5 views
-8

私はPythonで新しくなったと言って始めます。私はDiscordボットに取り組んできましたが、現在は固執しています。Python .join()フォーマットエラー

list = ['brown', 'polar', 'grizzly', 'sun', 'kodiak'] 
print("\nbear ".join(list)) 

これは、現在印刷します:

brown 
bear polar 
bear grizzly 
bear sun 
bear kodiak 

私はそれが​​をいただきたいのでbrownがリストに参加するには含まれていない理由として困惑しています。私はbearを間違った場所に置いていると仮定しています。私はかなり長い間、これに取り組んできたので、どんな助けも大いにありがたいです。再度、感謝します。 docsから

+4

でご参加始まる ' '\ n''ので。 –

+8

'str.join'は区切り文字*をiterable内の項目の間に置きます。 – jonrsharpe

+1

リストに 'teddy''を最初の要素として追加してみてください。何が起こるか観察する。 –

答えて

0

すでに、各要素に追加されていない各要素の間に区切り文字が挿入されていると言われています。

あなたが簡単に正確例えば、 bearを追加して新しいリストを作成することができますしかし

>>> lst = ['brown', 'polar', 'grizzly', 'sun', 'kodiak'] 
>>> newlst = [item + ' bear' for item in lst] 
>>> print('\n'.join(newlst)) 
brown bear 
polar bear 
grizzly bear 
sun bear 
kodiak bear 

これはbearに各リスト項目を追加し、項目の間に改行を挿入します。

また、各リスト項目にそれを前に付加することができます

>>> newlst = ['bear ' + item for item in lst] 
>>> print('\n'.join(newlst)) 
bear brown 
bear polar 
bear grizzly 
bear sun 
bear kodiak 
0

str.join(iterable)

戻り反復可能で 文字列を結合した文字列。 [...] 要素間のセパレータは、このメソッドを提供する文字列です。

(太字強調)。

str.joinは、iterable.joinwith(delimiter)のようなもっと慣用的なものではなく、delimiter.join(iterable)を指定する必要があるため、直感的ではありません。

つまり、これはどういうことですか。

'\nbear '.join(['a', 'b', 'c']) 

    => a\nbear b\nbear c 

    => a 
    bear b 
    bear c 

デリミタは、各反復可能要素間にが挿入されています。

0

コメントに記載されている@jonrsharpeと同様に、.join()は項目間にセパレータを配置します。それはあなたが何かに変換するために使用したいキーワードがありますので、私は、変数名としてlistを使用しないことをお勧めする、ところで

for item in list: 
    print("bear", item) 

:あなたが行っているものを達成するには、代わりに次を使用することができますリスト。

0

あなたは行の末尾にbear &改行を追加したいので、あなたがこのようなjoinを使用することはできません。あなたは空の文字列との適切な形式の文字列のリストjoin次のことができます。

"".join(map("{} bear\n".format,['brown', 'polar', 'grizzly', 'sun', 'kodiak'])) 

が与える:

'brown bear\npolar bear\ngrizzly bear\nsun bear\nkodiak bear\n' 
関連する問題