输出到csv没有停用词

时间:2014-07-10 17:36:08

标签: python csv

所以我在这里有这个代码搜索一个名为"声明"的csv文件。查看它是否包含csv文件中的任何单词" sexualHarassment"并将这些结果打印到新的csv文件中。这部分效果很好。

我遇到问题的部分是删除停用词。我有第三个csv文件,其中包含一列停用词。我无法弄清楚如何在没有停用词的情况下输出这些信息。感谢。

这是我的代码:

    import csv

    with open("claims.csv") as file1, open("sexualHarassment.csv") as file2,
    open("stopwords.csv") as file3, open("output.csv", "wb+") as file4:
        writer = csv.writer(file4)
        key_words = [word.strip() for word in file2.readlines()]
        stop_words = [stop.strip() for stop in file3.readlines()]
        for row in file1:
            row = row.strip()
            for key in key_words:
                if key in row:
                   writer.writerow([key, row])

2 个答案:

答案 0 :(得分:2)

是的,你可以。

关于问题正文。您可以使用replace功能删除行中的所有关键字:

for key in keywords: 
    row = row.replace(key, "")

编辑:

for key in stopwords: 
    row = row.replace(key, "")

编辑结束

我不知道这是否是您的意图,但除非您想重复添加相同的行(如果每行存在多个关键字),您可能需要执行类似

的操作
        for key in key_words:
            if key in row:
               writer.writerow([key, row])
               break # would not recommend using breaks but that's more personal taste

        flag = False;
        for key in key_words:
            if key in row:
               flag = True;
        if flag:
            writer.writerow([key, row])

LG

答案 1 :(得分:1)

如果要从较长的字符串中删除单词列表,可以使用replace函数,如下所示:

row = "stop go stop stop2 yellow stop3 hi"
stop_list = ["stop","stop2","stop3"]     # You'd get this from the file.
for stop_word in stop_list:
  row = row.replace(stop_word,"")
print row                                 # Output: " go   yellow  hi"

这基本上会迭代每个停用词并将其替换为行中的"",从而有效地删除它们。

不要问我在哪里提出示例词,因为我不知道。