首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >难以使用analyzer.py,返回KeyError: analyzer.py

难以使用analyzer.py,返回KeyError: analyzer.py
EN

Stack Overflow用户
提问于 2017-11-03 11:48:33
回答 1查看 58关注 0票数 0

下面是我的代码的样子:

代码语言:javascript
复制
import nltk

class Analyzer():

    def __init__(self, positives, negatives):
        self.positives = set()
        self.negatives = set()

        file = open(positives, "r")
        for line in file:
            self.positives.add(line.strip("\n"))
            if line.startswith(";"):
                self.positives.remove(line)
        file.close()

        file1 = open(negatives, "r")
        for line in file1:
            self.negatives.add(line.strip("\n"))
            if line.startswith(";"):
                self.negatives.remove(line)
        file1.close()

    def analyze(self, text):
        with open("text") as texts:
            for lines in texts:
                # Get a list of words from the lines in text.
                tokens = [self.tokenizer.tokenize(lines)]
                # All the words in postive-words and negative-words are lowercased.
                if tokens.lower() in self.positives:
                    return 1
                elif tokens.lower() in self.negatives:
                    return -1
                else:
                    return 0

不幸的是,这似乎不起作用,无论我如何绕过代码行,我都会得到:

代码语言:javascript
复制
Traceback (most recent call last):
  File "./smile", line 32, in <module>
    main()
  File "./smile", line 20, in main
    analyzer = Analyzer(positives, negatives)
  File "/home/ubuntu/workspace/pset6/sentiments/analyzer.py", line 13, in __init__
    self.positives.remove(line)
KeyError: ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n'

能告诉我我做错了什么吗?真的很感激你的一些提示!谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-03 12:02:02

问题是,您正在尝试从集合中移除不存在的项。您正在将line.strip("\n")添加到集合中,但随后尝试从同一集中删除line。为了确保始终删除集合中实际存在的内容,可以执行以下操作:

代码语言:javascript
复制
entry = line.strip("\n")
self.positives.add(entry)
if line.startswith(";"):
    self.positives.remove(entry)

在上面的代码中,您绝不能意外地尝试删除字典中不存在的内容。在处理self.negatives时,您也必须进行类似的更改,但这不应该太难。

或者,如果要通过重新排列到以下内容来删除条目,则可以简单地不向集合添加条目:

代码语言:javascript
复制
if not line.startswith(";"):
  self.positives.add(line.strip("\n"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47095083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档