它说
james.append(sanitize(each_item))
(mins, secs) = time_string.split(splitter)
need more than 1 value to unpack
怎么了?谢谢。这是Head First Python的例子
james = []
def sanitize(time_string):
if '-' in time_string:
splitter = '-'
elif ':' in time_string:
splitter = '-'
else:
splitter = ','
(mins, secs) = time_string.split(splitter)
return(mins + '.' + secs)
with open('james.txt', 'r') as jaf:
data = jaf.readline()
james_data = data.strip().split(',')
for each_item in james_data:
james.append(sanitize(each_item))
sort(james)
print(james)
答案 0 :(得分:1)
我很确定第二个应该有
elif ':' in time_string:
splitter = ':'
基本上它会查找类型的字符串:min:sec或min-sec或min,sec并尝试将它们转换为min.sec
然而,目前在其他任何事情上都是min-sec它会失败,因为split不会有任何有效的工作。
所以它看起来只适用于具有以下对的csv文件:
min-sec, min-sec, min-sec,
在第一行
如果你修复第二个'if'它也可以在min:sec ..上工作但是它也应该处理其他没有的标记:或者 - 或者只是按原样返回它们?
对于诸如<???>-<????>-<???>
之类的值,如果解压缩的值太多,它也会失败
Sanitize正在寻找一个字符串来分割它的输入,一旦它决定分割器它试图用它分割字符串然后重建它..
然而,如果拆分器出现的次数超过一次,则会失败,因为可能会有值解压缩。默认分割器是,
,它是唯一不可能出现在此文本中的字符