You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python csv.reader时报无法将字符串转Float错误如何解决

报错原因

你使用quoting=csv.QUOTE_NONNUMERIC参数时,csv.reader会强制将所有未被引号包裹的字段转换为float类型,而你的CSV文件中存在App这类未加引号的字符串字段,转换失败触发ValueError。
你修改参数后仍报错的常见原因是未重新打开文件对象,前次读取操作已经将文件指针移动到了文件末尾,修改参数后的读取逻辑没有生效。

解决方案
  • 方案1:默认读取+手动类型转换(最稳妥,适配混合类型无引号的CSV)
    默认不添加特殊quoting参数,csv.reader会把所有字段读取为字符串格式,你需要使用对应字段时单独做类型转换即可,参考代码:
import csv

with open("你的CSV文件路径.csv", "r", encoding="utf-8") as fileobj:
    csvreader = csv.reader(fileobj)
    next(csvreader, None) # 跳过表头
    for rows in csvreader:
        # 以你给出的示例行 ['Parkinson Exercices FR', 'MEDICAL', '', '3', '1000', '0'] 为例
        # 前3个字段保留字符串,后3个字段转换为浮点型,空值自定义默认值
        str_col1, str_col2, str_col3, num_col1_str, num_col2_str, num_col3_str = rows
        num_col1 = float(num_col1_str) if num_col1_str.strip() else 0.0
        num_col2 = float(num_col2_str) if num_col2_str.strip() else 0.0
        num_col3 = float(num_col3_str) if num_col3_str.strip() else 0.0
        # 后续直接使用对应类型的变量即可
  • 方案2:修正CSV格式后使用csv.QUOTE_NONNUMERIC
    如果你的CSV设计规范要求字符串加引号、数字不加引号,可以先修正CSV文件,给所有字符串字段补充双引号包裹,再使用quoting=csv.QUOTE_NONNUMERIC参数即可自动完成类型转换。
  • 方案3:用pandas自动识别类型(适合字段多的场景)
    如果CSV字段较多不想手动逐个转换,可以用pandas库的read_csv方法自动识别字段类型,参考代码:
import pandas as pd
df = pd.read_csv("你的CSV文件路径.csv")
# 读取后可通过df["列名"]直接调用对应类型的数据,字符串和数值类型会自动识别

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:24:04