1. ホーム
  2. python

PythonでValueError: not enough values to unpack (expected 2, got 1)が発生する原因と解決方法

2022-02-20 09:44:39
<パス

PythonでValueError: not enough values to unpack (expected 2, got 1)が発生する原因と解決方法

I. 問題の説明

import pickle
f = open('record1.txt','r')
girl = []
boy = []
count = 0
#content = f.readlines()
for eachline in f:
    if '=========' is not in eachline:
        (role, spoken) = eachline.split(':',1)


エラーを表示したまま実行する

Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\python learning\lianxi\test30-1\pickle-file.py", line 10, in <module>
    (role, spoken) = eachline.split(':',1)
ValueError: not enough values to unpack (expected 2, got 1)


Error: not enough values to unpack (expected 2, got 1) 解凍するための値が不足しています(need 2, got 1)。プログラムは、読み込んだ各行を : で区切られた2つの部分に分割するよう求め、 : が見つからない場合はエラーを報告します。
II. 誤りの原因
1、ドキュメント record1.txt 内容 ':' は中国語のコロンで、プログラム "(role, spoken) = eachline.split(':', 1) "(role, spoken) = eachline.split(':',1)" の ':' は英語のコロンで、スライス時に該当するコロンを見つけられないため、エラーを報告することになりました。
2. record1.txt ファイルは改行が多く、改行しかない行もある。
record1.txtの内容をインターネットから直接txtファイルにコピーしており、コピーした内容は以下のリンクにあります。[小さな鯛の教えのビデオのrecord.txtファイルの内容]です。
(https://blog.csdn.net/guokaigdg/article/details/82725551)。
ページには、次のように表示されます。

以下のようにtxtファイルに直接コピーします。
コピーは1つの大きな段落として完成し、改行もないため、以下のように手作業で調整した。
調整済みファイルを指定してプログラムを実行すると、エラーが報告され、調整済みファイルの内容が次のようにワードファイルにコピーされます。
これは、ウェブページからコピーする際、各文章は改行で終わるのですが、それがtxtファイルに反映されず、その後手動でキャリッジリターンして調整した結果、キャリッジリターンだけの空行が多くなってしまうことに起因しています。
ウェブページからコピーした内容は、次のようにワードファイルに直接コピーします。
各行の後に独自の改行があるのがわかると思います
解決方法 参考までに改行だけの空行を削除してください。 空行の削除
III. このエラーを回避する方法
各行を読むときに空行かどうかを判断し、空行の場合は行を飛ばして次の行を読みます。
参考リンク record.txtの内容
余分なキャリッジリターンを削除するソリューション