wan*_*gcs 6 python string python-3.x
我正在进行Python挑战,但在任务6中我遇到了一些问题:
comments = []
comments.append(file_zip.getinfo('%s.txt'%name).comment)
print(''.join(comments))
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:
TypeError:序列项0:预期的str实例,找到的字节
我寻找答案,并尝试这样:
print(b''.join(comments))
Run Code Online (Sandbox Code Playgroud)
它工作和打印:
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
Run Code Online (Sandbox Code Playgroud)
我认为它'/n'视为一个字母和打印它,但是,我不希望这样.我怎样才能使它工作?
Jim*_*ard 11
问题是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
Run Code Online (Sandbox Code Playgroud)
加入b''是一个可行的选择,但是,正如你所说,它并没有逃脱特殊的角色,如'\n'; 这是bytes实例的预期行为.
您可以decode在join编辑后输入字符串b'':
print(b''.join(comments).decode())
Run Code Online (Sandbox Code Playgroud)
或者,您最初尝试使用和在空字符串上的decode每个元素:commentsmapjoin''
print(''.join(map(bytes.decode, comments)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11081 次 |
| 最近记录: |