Python即使在注释中也会收到无效错误

Python即使在注释中也会收到无效错误,python,csv,Python,Csv,我想读取一个包含两列的.csv文件。前者表示索引名,后者表示相应的供应。然后我想用alpha列表中表示的一些权重乘以供应量。但是我得到的错误是 Can't multiply sequence by non-int of type 'float' 在我叫writer.write的那一行 从我通过谷歌搜索得到的信息来看,这是因为,[5]*3创建了一个包含3个元素的列表,值为5,这是我不想要的。我已经看到其他人通过循环解决了这个问题,在这个例子中,我在alpha中。除了以这种方式做这件事,还有什

我想读取一个包含两列的.csv文件。前者表示索引名,后者表示相应的供应。然后我想用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
。在那里再次使用
语法,您应该不会有问题。