2013-03-10 26 views
-3
movies = defaultdict(int) 
for line in open('trial.txt', "r"): 
    user,movie,rating,time = line.rstrip('\n').split('::') 
    movies[movie] += 1 

以下行,總會發生錯誤,我不明白:需要超過1點的值來解壓

user, movie, rating,time = line.rstrip('\n').split('::') 
ValueError: need more than 1 value to unpack 

我可以隨時打印出來的線,這是真的有4個零件 有什麼不對?謝謝!

+3

您是否檢查過該行是否爲空? – 2013-03-10 04:42:02

+1

你的輸入文件是什麼樣的? – ATOzTOA 2013-03-10 04:44:43

+0

我查過了,它不是空白。 的數據是這樣的:1267 :: 47999 :: 0.5 :: 1188678492 最初在.dat – Tony 2013-03-10 04:47:59

回答

2

它看起來像文件中有空行。您必須跳過它們以避免此錯誤,或者至少檢查您想要解包的值的數量是否正確:

movies = defaultdict(int) 
for line in open('trial.txt', "r"): 
    values = line.rstrip('\n').split('::') 
    if len(values) == 4: 
     user,movie,rating,time = values 
     movies[movie] += 1 
    else: 
     print "Non-valid format: %s" % line 
+0

這很酷!非常感謝。我檢查了數據集,實際上沒有發現任何空白。你怎麼能知道它?謝謝。 – Tony 2013-03-10 05:10:18

+1

@TonyGuangyuTong很高興幫助,如果它解決了您的問題,隨時接受答案。 – 2013-03-10 05:13:58

相關問題