Python即使在注释中也会收到无效错误
我想读取一个包含两列的.csv文件。前者表示索引名,后者表示相应的供应。然后我想用alpha列表中表示的一些权重乘以供应量。但是我得到的错误是Python即使在注释中也会收到无效错误,python,csv,Python,Csv,我想读取一个包含两列的.csv文件。前者表示索引名,后者表示相应的供应。然后我想用alpha列表中表示的一些权重乘以供应量。但是我得到的错误是 Can't multiply sequence by non-int of type 'float' 在我叫writer.write的那一行 从我通过谷歌搜索得到的信息来看,这是因为,[5]*3创建了一个包含3个元素的列表,值为5,这是我不想要的。我已经看到其他人通过循环解决了这个问题,在这个例子中,我在alpha中。除了以这种方式做这件事,还有什
Can't multiply sequence by non-int of type 'float'
在我叫writer.write的那一行
从我通过谷歌搜索得到的信息来看,这是因为,[5]*3创建了一个包含3个元素的列表,值为5,这是我不想要的。我已经看到其他人通过循环解决了这个问题,在这个例子中,我在alpha中。除了以这种方式做这件事,还有什么别的方法吗?或者,当我对每次迭代中的一个值不感兴趣时,我现在是如何做的,我对它们都感兴趣
我的代码如下:
#! /usr/bin/python
import csv
import math
writer = open("C:\\Users\\Guda\\Documents\\manipulerat3.csv", "w")
alpha = [0.16,0.13,0.13,0.20]
with open("C:\\Users\\Guda\\Documents\\manipulerat2.csv", "r") as f:
reader = csv.reader(f, delimiter ="\t")
for row in reader:
a = float(row[1])
a = int(math.ceil(a))
writer.write("%s\t\%s\t%s\%s\t%s\n" % (row[0],alpha[0]*a,alpha[1]*a,alpha[2]*a, alpha*alpha[3]))
尝试writer.write(“%s\t\%s\t%s\%s\t%s\n”%(行[0],字母[0]*a,字母[1]*a,字母[2]*a,字母[3]*a))
您的代码中有一个输入错误,导致列表alpha与alpha相乘[3]。由于alpha[3]是一个浮点数,因此您将得到所提到的错误。在
alpha*alpha[3]
中,您希望实现的是将所有元素乘以第四个元素。此外,您还希望在末尾将此结果输出为字符串(我假定以制表符分隔)。如果是这种情况,那么您可以将以下内容替换为alpha*alpha[3]
:
"\t".join(str(val * alpha[3]) for val in alpha)
alpha*alpha[3]
正在尝试将列表alpha
乘以浮点0.20
。您希望得到什么结果?如果您想将列表中的每个元素乘以某个因子,请使用map
:map(lambda x:x*multiplier,alpha)
我看到的另一个错误是,您永远不会在代码末尾关闭writer
。在那里再次使用和
语法,您应该不会有问题。