【问题标题】:getting a 'str' object does not support item assignment error in python获取'str'对象不支持python中的项目分配错误
【发布时间】:2020-04-15 11:16:09
【问题描述】:

我正在尝试编写在这里运行这段代码,但我收到一个“str”对象不支持项目分配错误

    for i in range(1, len(rows1)): # len(rows) is 90
        for j in range(rowsize): # rowsize is 13
            training_data[i][j] = float(training_data[i][j]) # 'str' object does not support item assignment
        training_instances.append(training_data[i])

training_instances = [] 为空,training_data 是我从文件中解析的值列表。 training_data 的前 3 个元素如下所示:

['14.37 1.96 2.4 16.9 113.0 3.95 3.49 0.24 2.58 7.8 0.86 3.46 1481.0 1', '12.26 1.74 2.13 19.0 80.0 1.65 2.23 0.37 1.33 3.6 1.0 3.17 510.0 2', '11.82 1.47 1.99 20.8 86.0 1.98 1.6 0.3 1.53 1.95 0.95 3.33 495.0 2']

有人可以向我解释为什么我会收到此错误吗?我是 Python 的新手,我只是想把这个作业交上来。几小时前就该交作业了。

【问题讨论】:

  • training_data[i] 似乎是一个字符串。您不能更改字符串中的单个字符,因为它是不可变的 ("123"[1] = "6")。您必须创建一个新的 (2D) 数组并在迭代原始数组时填充它。
  • 你说得对,这就是问题所在!我现在已经创建了二维数组,现在一切正常。谢谢克里斯蒂法蒂!
  • 您的整个数据是列表中的字符串,请参阅training_data 输出中的''

标签: python string floating-point typeerror


【解决方案1】:

training_data[0] 是字符串'14.37 1.96 2.4 16.9 113.0 3.95 3.49 0.24 2.58 7.8 0.86 3.46 1481.0 1'。它不是您要处理的列表。你说你已经解析了数据,但你根本没有。也许您打算在创建training_data 时调用.split()

【讨论】:

  • 嘿,你说得对,我忘了调用 .split()!我现在已经(正确地)解析了它,错误已经消失了。谢谢亚历克斯!
猜你喜欢
  • 2015-12-22
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 2018-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多