为什么Python显示'ValueError:无法将字符串转换为浮点数'?

Kri*_*673 3 python runtime-error type-conversion

我有一个包含数字的CSV,我试图转换为浮点数.

filename = "filename.csv"
enclosed_folder = "path/to/Folder"
full_path = os.path.join(enclosed_folder,filename)

with open(full_path) as input_data:
    temp = input_data.readlines()
    n = len(temp) #int(temp.pop(0))
    matrix = [x.split(" ") for x in temp]
    for i in range(n):
        for j in range(n):
            matrix[i][j] = float(matrix[i][j])
    input_data.close()
Run Code Online (Sandbox Code Playgroud)

当我在任何文本编辑器中打开文件时,它不会显示\n在每行的末尾.

在此输入图像描述

但是运行python代码会显示`ValueError:无法将字符串转换为float',因为'\n'出现在每行的末尾.

Traceback (most recent call last):
  File "hierarchical-clustering.py", line 37, in <module>
    matrix[i][j] = float(matrix[i][j])
ValueError: could not convert string to float: '1,0.058824,0.076923,0.066667,0.055556,0.058824,0.071429,0.052632,0.076923,0.0625,0.0625,0.055556,0.055556,0.05,0.066667,0,0,0.055556,0.0625,0.058824,0.058824,0.047619,0.055556,0.0625,0,0.052632,0.066667,0.055556,0.0625,0.058824,0.041667,0.066667,0.058824,0.071429,0.066667,0.076923,0,0.083333,0.052632,0.071429,0.076923,0,0.0625,0.076923,0.058824,0.076923,0.055556,0,0.0625,0.071429,0.0625,0.0625,0.083333,0,0,0,0.058824,0.0625,0,0.058824,0.0625,0.0625,0.066667,0.0625,0.052632,0.066667,0.076923,0.058824,0.071429,0.066667,0.058824,0.071429,0.058824,0.071429,0.058824,0.071429,0.071429\n'
Run Code Online (Sandbox Code Playgroud)

那么,我该如何解决这个错误呢?

编辑:我使用strip()以及rstrip()删除空格的一些答案中的建议,但仍然错误不会消失:

Traceback (most recent call last):
  File "hierarchical-clustering.py", line 37, in <module>
    matrix[i][j] = float(matrix[i][j].rstrip())
ValueError: could not convert string to float: '1,0.058824,0.076923,0.066667,0.055556,0.058824,0.071429,0.052632,0.076923,0.0625,0.0625,0.055556,0.055556,0.05,0.066667,0,0,0.055556,0.0625,0.058824,0.058824,0.047619,0.055556,0.0625,0,0.052632,0.066667,0.055556,0.0625,0.058824,0.041667,0.066667,0.058824,0.071429,0.066667,0.076923,0,0.083333,0.052632,0.071429,0.076923,0,0.0625,0.076923,0.058824,0.076923,0.055556,0,0.0625,0.071429,0.0625,0.0625,0.083333,0,0,0,0.058824,0.0625,0,0.058824,0.0625,0.0625,0.066667,0.0625,0.052632,0.066667,0.076923,0.058824,0.071429,0.066667,0.058824,0.071429,0.058824,0.071429,0.058824,0.071429,0.071429'
Run Code Online (Sandbox Code Playgroud)

Rob*_*obB 6

错误是由于您的行解析.你在空格上分开,而不是逗号,根据你的截图,这应该是什么.关键是查看返回的错误.它试图将整个行从一个字符串转换为一个浮点数.

更改:

matrix = [x.split(" ") for x in temp]
Run Code Online (Sandbox Code Playgroud)

至:

matrix = [x.split(",") for x in temp]
Run Code Online (Sandbox Code Playgroud)

  • @ Kristada673,它发生在我们所有人身上.最好的做法是非常仔细地阅读错误消息以确定根本原因.否则,你可能会陷入一个兔子洞并浪费大量时间,然后才意识到错误是多么简单. (2认同)