我有一个程序从一个文本文件中读取,该文件包含有多少人使用用户输入的电子邮件。这是我的代码:
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)
看起来你希望看到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']