2016-02-14 59 views
-2

我有一個程序,從包含有多少人使用電子郵件,文本文件中讀取用戶enter.This是我的代碼:值過多解壓(預期11)

user = input('Enter an email: ') 
f_in = open('us-500.csv','rt') 
c = 0 
f_in.readline() 
for line in f_in: 
    line = line.strip(' ') 
    first, last, company, address, city, country, state, phone1, phone2, email, web = line.split(',') 
    for count in line: 
     if count == user: 
      c +=1 
print(c) 

f_in.close() 
+0

您能描述錯誤嗎? –

+0

我無法讀取該文件,因爲它提供了太多要解壓縮的值。我只是想計算代碼工作文件 – Sal

回答

0

它看起來像有在csv文件中的列數少於您希望看到的數量。調試代碼並查看line的值在用逗號分割之前是什麼。

而且,我會用csv module代替:

import csv 

user = input('Enter an email: ') 
with open('us-500.csv', 'r') as f_in: 
    reader = csv.reader(f_in) 

    row = next(reader) 
    print(row) # see if row has 11 items 
    first, last, company, address, city, country, state, phone1, phone2, email, web = row 
+0

中有多少封電子郵件,但它會打印文件中的電子郵件。我想我錯過了 – Sal

0
first, last, company, address, city, country, state, phone1, phone2, email, web = line.split(',') 

您對左邊11個變量。這意味着爲了成功完成任務,右邊必須有11個部分。所以在你的情況下,line.split(',')需要產生正好11項。

從錯誤消息,這似乎不是這樣的:有超過11個值。所以你應該檢查文件的內容來找出更多的值。也許你忘了一兩個變量。

或者,您也可以更改作業,以便您可以採取任意數量的更多項目。爲此,請在末尾添加一個*rest名稱。明星確保任何剩餘項目都作爲列表存儲在該變量中:

>>> a, b, *c = 'a,b,c,d,e,f'.split(',') 
>>> c 
['c', 'd', 'e', 'f'] 
+0

的代碼工作,但它會打印文件中的電子郵件。我想我錯過了一些東西 – Sal

相關問題