无法弄清楚为什么此分配代码会引发错误

时间:2018-11-13 03:41:06

标签: python python-3.x

注意::我已经在Google上进行了搜索,并阅读了许多有关同一内容的文章,但我只是不理解这些解释。我知道答案是字符串变量是不可变的,但是我不明白如何在不更改变量内容的情况下获取值并将其拆分为单独的变量。如果有人可以向我展示如何以合法的方式编写此代码,我将不胜感激。

我是python新手,具有其他几种语言的经验。代码在帖子的结尾。

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

50,100

20,110

30,70

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

我得到了错误:

  

TypeError:'str'对象不支持项目分配

     

在读取的行上:度[i] =当前[0]

我现在已经花了几个小时来阅读有关字符串如何不可变的文章,但我只是不明白为什么它不起作用(或如何编写使其起作用)。可变度数开始为空。我不知道该如何以不改变任何内容的方式来创建它,或者如何以不同的方式进行操作。我尝试将current中的值强制转换为int并将其放入degree变量中,但仍然会收到TypeError。

我也不明白为什么我需要行degrees = ""开始。我对python的理解是,您不必声明变量,只需组成一个名称并在需要时使用它。但是,如果我省略degrees = ""行,则会收到一条错误消息

  

NameError:名称“度”未定义

但这似乎意味着我必须以某种方式声明该变量,然后再使用它。

感谢您的帮助。

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]

2 个答案:

答案 0 :(得分:1)

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

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

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

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

将值''赋予度数仅表示度数是string类型的变量,不包含任何变量。此外,它定义了变量度数,以便以后再调用时,解释器就会知道您要引用的内容。

但是,使用支持项目分配的变量类型(例如列表)更加方便。然后,您可以使用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])

答案 1 :(得分:0)

  

Python字符串是不可变的。

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

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

我可以看到来自支持此功能的其他语言的这种令人沮丧的情况。您可以看看bytearrays in python可变的