无法弄清楚为什么这个赋值代码会抛出错误

Can't figure out why this assignment code throws an error

注意: 我用谷歌搜索了这个,并阅读了很多关于同一件事的 post,但我只是不理解其中的解释。我知道字符串变量是不可变的答案,但我不明白如何在不更改我放入数据的变量内容的情况下获取值并将它们拆分为单独的变量。如果有人可以告诉我如何以合法的方式编写此代码我将不胜感激。

我是 python 的新手,具有其他几种语言的经验。代码在post.

的末尾

文件 input.txt 包含几行,例如:

50,100

20,110

30,70

我正在尝试打开文件,将行读入列表变量,然后在逗号处将每个值拆分为单独的变量。

我收到错误:

TypeError: 'str' object does not support item assignment

at the line that reads: degrees[i] = current[0]

我已经花了几个小时阅读 post 关于字符串如何不可变的文章,但我只是不明白为什么这不起作用(或者如何编写它才能起作用)。可变度数开始为空。我不知道如何以我不改变任何东西的方式创建它,或者如何以不同的方式做到这一点。我尝试将 current 中的值转换为 int 并将它们放入 degrees 变量中,但仍然得到 TypeError。

我也不明白为什么我需要行 degrees = "" 作为开头。我对python的理解是不用声明变量,随便起个名字,需要用的时候用。但是,如果我省略 degrees = "" 这一行,我会收到一条错误消息

NameError: name 'degrees' is not defined

但这似乎意味着我必须在使用变量之前以某种方式声明它。

感谢您的帮助。

f = open('input.txt')

content_list = f.readlines()

f.close()

degrees=""

volume=""

for i in range(len(content_list)):

    content_list[i] = content_list[i].strip('\n')

    current = content_list[i].split(",")

    print(content_list[i])

    degrees[i] = current[0]

    volume[i] = current[1]

Python strings are immutable.

这只是意味着一旦您在 python 中创建了一个字符串,您将无法更改它。

a = "Hello"
a[0] = 'J' # This is not allowed by python because you are updating contents of a string

我可以看到来自其他支持此功能的语言是多么令人沮丧。你可以看看 bytearrays in python 是可变的

我的理解是您想将文件的每一列存储在不同的变量中。在 Python 中,您可以使用许多不同的变量类型来存储数据,但它们的工作方式并不完全相同。正如 TypeError 指出的那样,您不能将项目赋值与字符串类型变量一起使用。但是,您可以对字符串执行操作,例如:

degrees = ''
string1 = 'abc'
degrees += string1

然后您可以在存储的字符串之间使用分隔符(例如斜杠),以便您能够识别每个字符串的开头和结尾。

string2 = 'def'
degrees += '/' + string2

给 degrees 赋值 '' 仅仅意味着 degrees 是一个不包含任何内容的字符串类型的变量。此外,它还定义了变量度数,因此如果您稍后调用它,解释器就会知道您指的是什么。

然而,使用支持项目分配的变量类型(例如列表)会更方便。然后,您可以使用 append 方法在每次迭代时存储新值。

f = open('input.txt')
content_list = f.readlines()
f.close()
degrees = []
volume = []
for i in range(len(content_list)):
    content_list[i] = content_list[i].strip('\n')
    current = content_list[i].split(",")
    degrees.append(current[0])
    volume.append(current[1])