【发布时间】:2013-06-11 14:21:29
【问题描述】:
我正在尝试根据 csv 列中的值是否为某个字符串来编写条件。
这是我的代码,我将根据“类型”列中单元格的内容是否为“问题”来执行一些东西:
f = open('/Users/samuelfinegold/Documents/harvard/edXresearch/snaCreationFiles/time_series/time_series.csv','rU')
reader = csv.DictReader(f, delimiter=',')
for line in reader:
if line['type'] == 'Question':
print "T"
CSV:
我得到的错误:AttributeError: DictReader instance has no attribute '__getitem__'
post_id thread_id author_id post_content types time votes_up votes_down posters
1 0 Jan NULL Question 3/1/12 10:45 5 1 Jan, Janet, Jack
2 0 Janet NULL Answer 3/1/12 11:00 2 1 Jan, Janet, Jack
3 0 Jack NULL Comment 3/2/12 8:00 0 0 Jan, Janet, Jack
4 1 Jason NULL Question 3/4/12 9:00 3 1 Jason, Jan, Janet
5 1 Jan NULL Answer 3/7/12 1:00 3 1 Jason, Jan, Janet
6 1 Janet NULL Answer 3/7/12 2:00 1 2 Jason, Jan, Janet
【问题讨论】:
-
请发布更多代码
-
您确定是导致问题的代码吗?如果您使用
reader['type']而不是line['type'],这就是您会得到的错误。添加print type(line), repr(line)看看它到底是什么。 -
当我写
for line in reader: print type(line)它什么也不返回 -
你在哪里做的? (请记住,您只能对
reader进行一次 for 循环 - 之后,您就结束了。)只需f = open("/Users//etc")、reader = csv.DictReader(f, delimiter=',')和for line in reader: print type(line), repr(line)。只有这四行。 -
您能否提供一个重现问题的 csv 文件样本?