【发布时间】:2020-06-28 15:18:01
【问题描述】:
tambola_callout = {}
for line in open("bingo-call-out.txt"):
num, callout = line.split(";")
tambola_callout[num] = callout
不知道是什么问题,怎么办?
【问题讨论】:
-
发生错误时您是否尝试检查
line的值是多少?
标签: python
tambola_callout = {}
for line in open("bingo-call-out.txt"):
num, callout = line.split(";")
tambola_callout[num] = callout
不知道是什么问题,怎么办?
【问题讨论】:
line 的值是多少?
标签: python
这一行:
num, callout = line.split(';')
预计您对split 的调用将返回正好包含两个元素的列表。如果您在赋值过程中尝试解压缩过少或过多的值,Python 将会出错。
例如,这将返回单个元素列表:
'something'.split(';') # == ['something']
确保你的字符串是你所期望的。
【讨论】:
这只是意味着您的文件中的其中一行bingo-call-out.txt 的格式为<all characters here> 而不是<some characters here>;<some characters here>
这个错误的意思是,在一般情况下,假设 line = abcd;efgh
line.split(";") 将返回一个包含两个元素[abcd,efgh] 的数组,这两个元素将分别分配给num 和callout。
现在如果有一个 line = abcde,那么 line.split(';') 只返回 ['abcde'],这是一个单元素列表,可以像您的语法一样解压缩成 2 个变量。
【讨论】: