2016-09-24 9 views
2

私はPythonの挑戦をしていたが、バイトミッション6で、私はいくつかの問題に会ったとき:はTypeError:strのインスタンス期待シーケンス項目0は、

comments = [] 
comments.append(file_zip.getinfo('%s.txt'%name).comment) 
print(''.join(comments)) 

が、これは私にエラーを与える:

TypeError例外を:シーケンス項目0:予想strのインスタンス、バイトが、私は答えを探した

を発見し、このような試みがあります

print(b''.join(comments)) 
を私はそれを望んでいない、

b'***************************************************************\n****************************************************************\n**             **\n** OO OO XX YYYY GG GG EEEEEE NN  NN **\n** OO OO XXXXXX YYYYYY GG 
    GG EEEEEE NN NN **\n** OO OO XXX XXX YYY YY GG GG  EE  NN NN **\n** OOOOOOOO XX XX YY  GGG  EEEEE  NNNN  **\n** OOOOOOOO XX XX YY  GGG  EEEEE  NN  **\n** OO OO XXX XXX YYY YY GG GG  EE   NN  **\n** 
OO OO XXXXXX YYYYYY GG GG EEEEEE  NN  **\n** OO  OO   XX  YYYY GG GG EEEEEE  NN 

私はそれがcharとして'/n'について考え、それを印刷し、しかし:

それが動作し、印刷します。どうすればそれを動作させることができますか?

答えて

5

file_zip.getinfo('%s.txt'%name).commentは明らかにbytesオブジェクトを返します。あなたがしようとstrに参加すると、すなわち''.join(..)エラーが発生します:

''.join([b'hello', b'\n', b'world'])  
TypeError: sequence item 0: expected str instance, bytes found 

b''に参加するには、それが'\n'などの特殊文字をエスケープしていない、あなたは注意して、実行可能な代替ですが。それはbytesインスタンスの予想される動作です。

することはできいずれかdecodeそれの後の文字列はされていb''join編:

print(b''.join(comments).decode()) 

または、decodeあなたはもともと試みたとして空の文字列''mapjoincommentsのすべての要素:

print(''.join(map(bytes.decode, comments))) 
関連する問題