我的python代码中出现以下错误:
TypeError: writelines() requires an iterable argument
我知道这是以前提交的错误,但我无法得到我的答案。这是我的密码:
def Normaliaze(dataset):
final_list=[]
twoCol = [ item[0:2] for item in dataset]
labels = [ item[2] for item in dataset]
twoColData = preprocessing.scale(float64(twoCol ))
for x,y in itertools.izip(twoColData,labels):
temp =[]
temp.append(x[0])
temp.append(x[1])
temp.append(y)
final_list.append(temp)
caving = open('/home/nima/Desktop/ramin-ML-Project/caving.txt','w')
for item in final_list:
if item[2] == 'caving':
caving.writelines(item[0])
caving.writelines('\t')
caving.writelines(item[1])
caving.writelines('\n')
您正在使用写入()
,但一次传递一个项目;file.writelines()
期望迭代(产生0或更多值序列的东西)。
使用文件。writeline()
(单数),或者更好,只需文件即可。write()
:
caving.write(item[0])
caving.write('\t')
caving.write(item[1])
caving.write('\n')
如果要编写单独的选项卡文件,可能需要使用csv
模块:
import csv
def normalize(dataset):
twoCol = [item[:2] for item in dataset]
labels = [item[2] for item in dataset]
twoColData = preprocessing.scale(float64(twoCol))
with open('/home/nima/Desktop/ramin-ML-Project/caving.txt', 'wb') as caving:
writer = csv.writer(caving, delimiter='\t')
for data, label in itertools.izip(twoColData, labels):
if label == 'caving':
writer.writerow(data)
这会产生相同的输出,但麻烦较少。
对于字符串,您应该write(),而对于字符串序列,您可以使用writelines()。请看这里的帖子。例如,您尝试使用writeline()编写sting'\t'。