3

我有一个 csv 文件,我正在尝试绘制一些内容,并且需要将字符串转换为浮点数。我的问题如下:

当我运行下面的代码时,

with open('meteors.csv', 'rU') as csvfile:
    reader=csv.reader(csvfile)
    for row in reader:    
        print row[6]

我得到这个输出:

58.58333

当我尝试

print type(row[6])

我得到这个输出:

<type 'str'>

但是当我尝试

 print float(row[6])

我收到此错误:

ValueError: could not convert string to float: coordinate_1

有谁知道发生了什么?

4

2 回答 2

4

您很可能会看到第一行,它在 CSV 文件中有列标题,并且coordinate_1是标题。

您可以跳过第一行:

with open('meteors.csv', 'rU') as csvfile:
    reader=csv.reader(csvfile)
    reader.next() # skips the first (header) row
    for row in reader:    
        print row[6]

或者,使用DictReader,像这样:

with open('meteors.csv', 'rU') as csvfile:
    reader=csv.DictReader(csvfile)
    for row in reader:    
        print row['coordinate_1']
于 2013-04-23T04:46:11.260 回答
2

您的 CSV 文件可能有一个标题,其中列出了每列的名称。您无法将这些名称转换为floats,因此这就是您的错误的来源。

您必须先使用标头:

with open('meteors.csv', 'rU') as csvfile:
    reader = csv.reader(csvfile)
    header = next(reader)

    for row in reader:
        print float(row[6])
于 2013-04-23T04:44:07.460 回答