2016年1月8日金曜日

pythonでValueError: too many values to unpack

pytonで小さいスクリプトを書きつつの覚え書き。
下記のようにリストをばらして個々の変数へ代入できる。multiple assignmentと言うようだ(pythonに限らない?)。
code, kind, price, num = line[:-1].split(' ')
これが
ValueError: too many values to unpack
となるのだが、この時は入力ファイルに問題があった。ファイルの各行に上記処理を適用するのだが、1行だけ行末にスペースが紛れ込んでいた。
1001 watch 0 0 <=行末に余計なスペースがあった



連続した空白はまとめてとか行末の空白は無視、みたいな処理はしないらしい(オプションによるのか?)。逆に所定数のスペースがあればちゃんと空文字列が返ってくるので、まぁ便利な面もあるのかと。。
1001 watch  <=行末にスペース2個
は、
['1001', 'watch', '', '']
とリスト化される。でもCSVならともかく、スペース区切りでは危険すぎるから、ダミー値の0を書いておくことにする。

0 件のコメント:

コメントを投稿