转换为Float和Int,TypeError:不能将序列乘以'float'Python 2.7类型的非int

时间:2015-10-27 21:13:12

标签: python python-2.7 csv

我正在尝试打开一个CSV文件,遍历其行并将行的最后一部分转换为通过将现有值乘以浮点数创建的新数字。

CSV文件的

Row[8]会返回一个字符串,该字符串表示为intNaNfloat。我已经替换了NaN,发现了切片以将字符串限制为5个字符。然后我尝试使用条件将适当的字符串转换为intfloat

for循环的最后一部分,我试图将CSV文件的相应部分乘以float(1.98),这就是我得到错误(TypeError: can't multiply sequence by non-int of type 'float')的地方。如果我将其更改为2,即脚本运行int

我觉得在使用if elseintfloat的字符串转换中必须存在问题,但我不知道在哪里。任何提示将不胜感激。

for row in csv_f:
        row[8] = row[8][:5]
        if isinstance(row[8], float):
            row[8] = float(row[8])
        if isinstance(row[8], int):
            row[8] = int(row[8])
        row[8] = row[8] * 1.9
        print row[8]

2 个答案:

答案 0 :(得分:0)

row[8]是一个字符串

type(row[8])
<class 'str'>

条件if isinstance永远不会被执行。

为什么当您更改为2然后工作?因为'a' * 2 == 'aa'

答案 1 :(得分:0)

在你的代码中,

都没有
    if isinstance(row[8], float):
        row[8] = float(row[8])
    if isinstance(row[8], int):
        row[8] = int(row[8])

将被执行,因为row[8]的类型为string

您需要做的只是将其更改为row[8] = float(row[8])即可。