1
URLリクエストの結果をPythonでCSV reader objectに変換しようとしています。出力は罰金だが、次のエラーが発生します。Python:csvリーダーへのURLデータ
for study_id, sample_id, run_id in reader:
ValueError: not enough values to unpack (expected 3, got 1)
最初に私がデータを要求し、文字列データに変換します
req = urllib.request.Request(url=url_get_project_runs, headers={'Content-Type': 'text/plain'})
res = urllib.request.urlopen(req)
dec_res = res.read().decode()
sys.stderr.write(str(dec_res)) --> for the print see below
return dec_res
印刷この与える:
ERP001736,ERS494374,ERR598958
ERP001736,ERS494394,ERR598963
ERP001736,ERS494431,ERR598964
ERP001736,ERS494445,ERR599170
ERP001736,ERS494488,ERR598996
ERP001736,ERS494518,ERR598976
ERP001736,ERS494559,ERR598986
ERP001736,ERS494579,ERR599078
ERP001736,ERS494616,ERR598944
ERP001736,ERS494628,ERR599001
ERP001736,ERS488919,ERR1701760
これをアイテムはコンマで区切られており、「行」は元のままなので、私にとってはうまくいくようです。 しかし、私はCSVリーダーのための入力としてこれを使用し、ここで、3つの列を印刷しようとした場合:
reader = csv.reader(dec_res, delimiter=',')
for study_id, sample_id, run_id in reader:
print(study_id + ", " + sample_id + ", " + run_id)
次のエラーが発生します。 ValueError: not enough values to unpack (expected 3, got 1)
は、私はさらににいくつかのコードをテストしましたこれは与える
for row in reader:
sys.stderr.write(str(row))
:
問題を見つけます
ありがとうございます! – CodeNoob
実際にCSV(常にではない)あなたがリスト内にそれらを渡すと、通常の文字列を読み取ることができます: ' >>>データ= csv.reader([ 'ERP001736、ERS494374、ERR598958']) >>>リスト(データ) [['' ERP001736 '、' ERS494374 '、' ERR598958 ']] しかし、@ダマスティスの方がはるかに優れています。 –