2016-11-15 10 views
-1

を解凍する必要以上1つの値私はこのフォーマットでデータを持つテキストファイルを読んでいます:スプリット - とValueError:

column : row 

これは、いくつかのサンプルデータです:

Name of the Property : North Kensington Upcycling Store and Cafe 
Availability : Now 
Interest Level : 74 people are looking right now 
Area : 1,200 sqft 
Retail Type : No 
Bar & Restaurant Type : No 

私のコードが与えられますこのエラー:この行で

ValueError: need more than 1 value to unpack 

k,v = txt_line.split(":") 

マイコード:

import pandas 
txt_file = r"patty.txt" 
txt = open(txt_file, "r") 
txt_string = txt.read() 
txt_lines = txt_string.split("\n") 
txt_dict = {} 

for txt_line in txt_lines: 
    print(txt_line) 
    k,v = txt_line.split(":") 
    k = k.strip() 
    v = v.strip() 
    if k in txt_dict: 
     list = txt_dict.get(k) 
    else: 
     list = [] 
    list.append(v) 
    txt_dict[k]=list 
print (pandas.DataFrame.from_dict(txt_dict, orient="index")) 
+0

Iを(私は空行が、その場合にはクラッシュを避けるためにスキップ追加します)最小限のデータで最初の3行だけを実行しようとしましたが、まだエラーが発生しています。私はここでロジックに何か間違っていますか? – roy

答えて

1

入力ファイルの行が空またはコロンが欠落している場合は、唯一の1つの要素split戻り、あなたはそのエラーを取得します。

が可能ではない、私は例外を回避するためにサイズチェックを行う、と解析を明示的にメッセージを印刷し、安全なそれを再生するには

if txt_line.strip(): 
    # line is not empty or just blanks 
    toks = txt_line.split(":") 
    if len(toks)==2: 
     # unpack safely 
     k,v = toks 
    else: 
     print("unable to parse {}".format(txt_line)) 
+0

Fabre、実際にはここでデータをコピー&ペーストしようとしたときに間違いでした。私はそれが問題だとは思わない。 – roy

+0

私のコードを変更して何が起こるか見てみましょうか?ファイルの最後に空白行のようなものでなければなりません。 –

+0

よ1分お願いします! – roy