web-dev-qa-db-ja.com

Python: '。join'を使用してデータを変更する(TypeError:シーケンス項目0:予期される文字列、タプルが見つかりました)

私は次の形式のデータを持っています:

[('A', 'B', 'C'),
 ('B', 'C', 'A'),
 ('C', 'B', 'B')]

私はこれを手に入れようとしています:

ABC
BCA
CBB

一度に1つのタプルを変換できます。

>> "".join(data[0])
.. 'ABC'

ただし、リスト全体を変換しようとすると、Pythonはエラーになります:

>> "".join(data[:])
.. TypeError: sequence item 0: expected string, Tuple found

リスト全体を変換する方法についてアドバイスはありますか?

ありがとうございました!

6
jjjayn

.joinは文字列のシーケンスを想定していますが、タプルのシーケンスを指定しています。

投稿した結果を取得するには、各タプルの各要素を結合してから、各タプルを結合する必要があります。

print('\n'.join(''.join(elems) for elems in data))

これは、.joinはジェネレータ式を受け入れ、data(タプルのリスト)を反復処理できるようにします。

したがって、2つの結合が進行中です。内側の結合は3文字の文字列を作成します(例:'ABC')、および外部結合は改行文字を配置します('\n') それらの間の。

12
sapi
lst=[('A', 'B', 'C'),
 ('B', 'C', 'A'),
 ('C', 'B', 'B')]

for x in lst:
    print ("".join(x))

出力は;

>>> 
ABC
BCA
CBB
>>> 

一発ギャグ;

print ("\n".join(["".join(x) for x in lst]))

最初にリストの各要素に到達する必要があります。

1
GLHF
a = [('A', 'B', 'C'),  ('B', 'C', 'A'),  ('C', 'B', 'B')]
print ["".join(line) for line in a]
0
Stavinsky