【问题标题】:TypeError: writelines() requires an iterable argumentTypeError: writelines() 需要一个可迭代的参数
【发布时间】:2014-09-22 19:56:48
【问题描述】:

我的 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')

【问题讨论】:

    标签: python file iterable


    【解决方案1】:

    您正在使用writelines(),但一次传入一个项目file.writelines() 需要一个可迭代对象(产生 0 个或多个值的序列)。

    改用file.writeline()(单数),甚至更好,只用file.write()

    caving.write(item[0])
    caving.write('\t')
    caving.write(item[1])
    caving.write('\n')
    

    如果您正在编写一个制表符分隔的文件,您可能想改用csv module

    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)
    

    这会产生相同的输出,但麻烦更少。

    【讨论】:

      【解决方案2】:

      对于字符串,您应该使用 write(),而对于字符串序列,您可以使用 writelines()。见帖子here。例如,您尝试使用 writeline() 编写字符串 '\t'。

      【讨论】:

        猜你喜欢
        • 2012-08-16
        • 2021-01-15
        • 2011-10-04
        • 2019-08-24
        • 2020-05-07
        • 2015-10-12
        • 1970-01-01
        相关资源
        最近更新 更多