今天一位群友,Python3也报了类似的错误:
TypeError:can't concat str to bytes
原因:
不管是报上面哪种错误?终其根本原因都是:类型不一致所造成的。
一、can't concat bytes to str 解决方法
解决方法也很简单,使用字节码的 decode()方法。
示例:
str = 'I am string'
byte = b' I am bytes'
s = str + byte
print(s)
报错“TypeError: can't concat bytes to str”。
解决方法:
s = str + byte.decode()
二、can't concat str to bytes 解决方法
为了好理解,我就简单拿几个示例来说吧!大家就能瞬间明白了。
示例1:
out = open('train_data.txt', 'w')
for sentence in sentences:
out.write(sentence.encode("utf-8")+"
")
print("done!")
报错“TypeError:can't concat str to bytes”
解决方法:
out.write(sentence.encode("utf-8")+b"
")
原因:write函数参数需要为str类型,需转化为str。
示例2:
with open('fujieace.txt', 'w') as f:
for line in docLst:
f.write(line + '
')
报错“TypeError:can't concat str to bytes”
解决方法:
这里只需要改两个地方,一个是把’w’改为‘wb’('wb'是字节写入。),一个是把‘ ’改为b’ ’。
with open('fujieace.txt', 'wb') as f:
for line in docLst:
f.write(line + b'
')
总结:
如果当你不知道它是什么类型的时候?python里可直接通过 type()函数 来查看数据类型。