私は非常に単純なテキストファイルを持っていますが、この例では、対応する金額の支出があるストアのリストで構成されています。 (タブ間隔を置いた)ファイルには、次のようになります。inループと比較したforループでのタプル展開の振る舞い
7-Eleven 7.48
Paradies 28.00
Shoppers 68.26
私の目標は、セブン - イレブンが、すべてのためのお金の量を合計することです。
price = 0.0
with open('stores.txt', 'r') as f:
for line in f:
line = line.strip('\n').split('\t')
for shop, priceStr in line:
if not shop == '7-Eleven':
price += float(priceStr)
あり、コードの中間部分をきれいにすることができるいくつかの単純化は、おそらくですが、私はとのトラブル抱えている「行のお店のために、priceStr:」ビットを私のコードは次のようになります。私の理解では、 "shop、priceStr"を実行すると、現在の行の内容をタプルとして解凍し、変数shopとpriceStrに代入する必要があります。しかし、私はエラーを取得する:
ValueError: too many values to unpack
しかし、私は、現在の行を取ると私は
shop, priceStr = line
print shop + ":" + priceStr
7-Eleven: 7.48
を取得し、ループの外にそれを解凍する場合、私は、forループのネストされたの間で異なるかを理解していないとインラインコード誰かが私に助言してくれる?このコードは、python2.7とpython3.4
おかげ
ファイルの最後に空白行がありますか? – Fejs
'split( '\ t')の代わりに' split() 'を実行しようとしました。' split'に引数を渡すと、返されたリストに空の文字列が残ることがあります –
万が一、ファイル? – James