打开太多值(预计11)

时间:2016-02-14 00:55:09

标签: python csv python-3.x

我有一个程序从一个文本文件中读取,该文件包含有多少人使用用户输入的电子邮件。这是我的代码:

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()

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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']