我将两篇论文的处理数据合二为一。我想创建一个两个计数集,使用多少个不同的单词以及其他分析。但是,当我将它们组合起来并设置(整个)时,我只返回一组字母。我有下面的代码以及我得到的输出。我希望输出是所有使用的单词。
print set(entire)
set([' ', '1', '0', '3', '2', '5', '4', '6', '9', 'a', 'c', 'b', 'e', 'd', 'g', 'f', 'i', 'h', 'k', 'j', 'm', 'l', 'o', 'n', 'p', 's', 'r', 'u', 't', 'w', 'v', 'y', 'x'])
from __future__ import division
import nltk
import csv
import re
from string import punctuation
import enchant
from enchant.checker import SpellChecker
dictionary = enchant.Dict("en_US")
chkr = SpellChecker("en_US")
with open('2012ShortAnswers.csv', 'rb') as csvfile:
data = csv.reader(csvfile, delimiter=",")
writer = csv.writer(open('2012output.csv', 'wb'))
for row in data:
row3 = row[3]
row3 = row3.lower().replace(' ', ' ')
row4 = row[4]
row4 = row4.lower().replace(' ', ' ')
row3 = row3.replace('\n', '')
row4 = row4.replace('\n', '')
for p in list(punctuation):
row3 = row3.replace(p, '')
row4 = row4.replace(p, '')
entire = row3 + row4
set(entire)
答案 0 :(得分:0)
您正在处理每一行输入并覆盖所有前一行,所以最后,您的变量只反映最后一行。
您需要在进入循环myset = set()
之前创建一个集合并在内部执行myset.add(row3)
,或者在循环内附加到列表中,然后在退出循环时生成集合。
另外,知道row3
确实是数据的第4列,用逗号分隔,对吧?如果这是一篇文章,你还希望从csv读者那里获得什么?
答案 1 :(得分:0)
row3
和row4
是字符串。你决不会把它们分成单词。当您对字符串执行set
时,它会在字符串中生成一组字符。
或许尝试row3 = row3.split()
,同样尝试第4行,然后执行set(row3+row4)
。
但是,这不会真正解决它,因为现在你没有做任何事情。您应该在循环外创建一些其他集合,并在每次循环迭代时添加它。现在你在每次迭代时创建一个集合,但只是扔掉它。