A';太多的值无法解压缩';python中的错误

A';太多的值无法解压缩';python中的错误,python,python-3.x,syntax-error,Python,Python 3.x,Syntax Error,这是我的代码,我想用数据做一个条形图。 最初,当我运行代码时,我在第17行得到一个缩进错误,在为整个for块添加了一个空格之后,我在第16行开始得到这个“太多值而无法解包错误”。 我是python新手,现在不知道如何继续 import pylab as pl data = """AP 10 AA 20 AB 30 BB 40 BC 40 CC 30 CD 20 DD 10""" grades = [] number = [] for line in data.split("/n"):

这是我的代码,我想用数据做一个条形图。 最初,当我运行代码时,我在第17行得到一个缩进错误,在为整个for块添加了一个空格之后,我在第16行开始得到这个“太多值而无法解包错误”。 我是python新手,现在不知道如何继续

import pylab as pl

data = """AP 10
AA 20
AB 30
BB 40
BC 40
CC 30
CD 20
DD 10"""

grades = []
number = []

for line in data.split("/n"):
     x, y = line.split()
     grades.append(x)
     number.append(int(y))       
fig = pl.figure()
ax=fig.add_subplot(1,1,1)
ax.bar(grades,number)
p.show()
应该是

for line in data.split("/n")
或者更好:

for line in data.split("\n")

问题是您的
for循环
在错误的标记(
/n
)而不是
\n
处拆分

但是,当您只想拆分换行符时,实际上有一个
splitlines()
-方法可以对字符串执行此操作:您应该实际使用此方法,因为它还将处理*nix和Windows之间的不同换行符分隔符(*nix系统通常通过
\r\n
表示换行,而Windows使用
\n
,旧的Mac OS使用
\r
:查看以了解更多信息)

您的错误发生在下一行:由于字符串未拆分为行,您的整个字符串现在将在空白处拆分,这将产生比您尝试分配给元组的2更多的值。

您有一行上没有两个项目:

for line in data.splitlines()
没有拆分为两个元素,这会引发错误。很可能是因为您没有正确拆分
数据
变量,并且没有将整个文本作为一个长文本。
/n
不会出现在
数据

改用
.splitlines()

 x, y = line.split()

作为一个有趣的替代方案,您也可以在此处使用对象,而不是像其他人建议的那样使用
splitlines
方法:

for line in data.splitlines():
     x, y = line.split()

这是第二双眼睛非常宝贵的时刻之一!非常感谢。呃,现在我收到一个错误“无法将‘float’对象隐式转换为str”。但是有任何float对象吗?为什么会有这样的错误?我不是100%确定,但我猜错误来自
matplotlib
bar
函数()需要两个参数:-left:左侧的x坐标(我想这些参数应该是浮点而不是str)-右:条形图的高度。因此,您可能需要使用一个表示条形图宽度的列表,而不是标签作为第一个参数。要设置标签,您可能可以使用matplotlib中的
xticks
函数-matplotlib文档中有一个示例。请查看这是否有帮助,或者再次询问:)是,我正确地读取了错误,这是由于matplotlib函数造成的。。所以我把分数改为[1,2,3,4,5,6,7,8],然后使用xticks函数,现在它完成得很好:)再次感谢。
>>> data = """AP 10
... AA 20
... AB 30
... BB 40
... BC 40
... CC 30
... CD 20
... DD 10"""
>>> import cStringIO as StringIO
>>> filelike = StringIO.StringIO(data)
>>> for line in filelike:
...     print line.split()
... 
['AP', '10']
['AA', '20']
['AB', '30']
['BB', '40']
['BC', '40']
['CC', '30']
['CD', '20']
['DD', '10']