python 3不能将字节与str合并为一个列表。

时间:2023-01-06 22:00:12

I have the following chunk of code that I'm trying to run

下面是我要运行的代码块。

import json
import textProcess as tp

review = open('../inres_review.json')
vocabulary = open('../vocabulary.txt','w+')
label = open('../label.txt','w+')
data = open('../data.txt','w+')

voc = []
revs = []
lab = []
dat = []
i=1
for line in review:
    jre = json.loads(line)
    jstar = jre['stars']  
    text = jre['text']  
    lab.append(jstar)
    ws = tp.removeStopPunc(text)
    revs.append(ws)
    voc += ws
    i += 1

for i in lab:
    label.write(str(i)+"\n")
print ("label created successfully!")

voc = list(set(voc))
print (len(voc))
print (type(i))
for i in voc:
    vocabulary.write(i.encode('UTF-8')+"\n")
print ("Vocabulary created successfully!")

for revid, rev in enumerate(revs):
    dat.append({})
    for w in rev:
        if w in voca:
            k = voca.index(w)+1
            if k not in dat[revid]:
                dat[revid][k] = 1
            else:
                dat[revid][k] += 1
print (len(revs))


for revid, rev in enumerate(dat):
    for k,v in rev.iteritems():
        s = str(revid+1)+' '+str(k)+' '+str(v)+'\n'
        data.write(s)
print ("successfully create data")


review.close()
vocabulary.close()
label.close()
data.close()

However, no matter what I changes I implement I am getting the following error. Can anyone please point out what's wrong here?

然而,无论我更改了什么,我都得到了以下错误。有人能指出这里有什么问题吗?

TypeError                                 Traceback (most recent call last)
<ipython-input-18-21a3dc9eb8ad> in <module>()
     33 print (type(i))
     34 for i in bvoca:
---> 35         vocabulary.write(i.encode('UTF-8')+"\n")
     36 print ("successfully create vocabulary!")
     37 

TypeError: can't concat bytes to str

Any help is appreciated!

任何帮助都是赞赏!

1 个解决方案

#1


4  

encode returns bytes, so you need to convert '\n' to bytes as well:

编码返回字节,因此您需要将'\n'转换为字节:

i.encode('UTF-8') + b"\n"

i.encode(utf - 8)+ b“\ n”

#1


4  

encode returns bytes, so you need to convert '\n' to bytes as well:

编码返回字节,因此您需要将'\n'转换为字节:

i.encode('UTF-8') + b"\n"

i.encode(utf - 8)+ b“\ n”