0

我将两篇论文的处理数据合二为一。我想创建一组两个计算使用了多少不同的单词以及其他分析。但是,当我将它们组合并执行 set(entire) 时,返回的只是一组字母。我有下面的代码以及我得到的输出。我希望输出是所有正在使用的单词。

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

2 回答 2

0

您正在处理每一行输入并覆盖所有前面的行,所以最后,您的变量只是反映最后一行的内容。

您要么需要在进入循环之前创建一个集合myset = set()并在myset.add(row3)内部执行,要么附加到循环内的列表,然后在退出循环时生成集合。

另外,知道row3真的是数据的第 4 列,用逗号分隔,对吗?如果这是一篇文章,你希望从 csv 阅读器中得到什么?

于 2013-11-01T06:30:17.447 回答
0

row3并且row4是字符串。在任何时候,您都不会将它们拆分成单词。当您set对字符串执行操作时,它会在字符串中生成一组字符。

也许尝试row3 = row3.split()同样对第 4 行,然后执行set(row3+row4).

但是,这并不能真正解决它,因为现在你没有对那个集合做任何事情。您应该在循环之外创建一些其他集合,并在每次循环迭代时添加到它。现在,您在每次迭代中创建一个集合,但将其丢弃。

于 2013-11-01T06:30:27.027 回答