2017-03-06 51 views
0

我有这样的,通过Github的API,BASE64解码后:如何把字节字符串列表转换为字符串在Python3

[b'<!DOCTYPE html>\n', b'<html>\n', b' <head>\n'] 

而且我真的很喜欢一个字符串(与\n行尾)或字符串列表。

我花了一个小时追逐TypeError: a bytes-like object is required, not 'str',因为我认为这是已经字符串列表,并质疑我自己的λ/过滤能力我才意识到根本原因是其他地方。我尝试了谷歌搜索,但我只获得'python字节串'这是不同的命中。

+0

“python字节串”如何不同? – tripleee

回答

1

你可以只mapbytes.decode方法给每个元素,然后join它,如果你需要一个字符串:

l = [b'<!DOCTYPE html>\n', b'<html>\n', b' <head>\n'] 
s = "".join(map(bytes.decode, l)) 

,或者调用列表-COMP每个元素decode如果你需要一个列表:

ls = [i.decode() for i in l] 

的结果现在正在:

>>> print(repr(s)) # repr to show \n 
'<!DOCTYPE html>\n<html>\n <head>\n' 
>>> print(ls) 
['<!DOCTYPE html>\n', '<html>\n', ' <head>\n'] 
+0

谢谢。我忍不住想知道'TypeError:类似字节的对象的错误信息是否是必需的,而不是str'对于noobs可能更有帮助 –