我正在编写一个名为HASHcount(名称,列表)的函数,它接收两个参数,名称一个是要分析的文件的名称,文本文件的结构如下:
Date|||Time|||Username|||Follower|||Text
所以,基本上我的输入是一个tweets列表,有几行结构如上面所示。list参数是我想在该文本文件中计数的哈希标记列表。我希望我的函数可以检查列表中每个单词在tweets列表中出现的次数,并将每个单词计数的字典作为输出,即使该单词缺失。在
例如,使用指令HASHcount(December,[Peace,Love])程序应该给出一个字典作为输出,该字典通过检查单词Peace和Love在名为December的每个tweet的文本字段中被用作hashtag的次数。在
此外,在字典中,单词必须没有标签simbol。在
我一直在做这个函数,我在这一点上,但我有一些关于字典的问题:
^{pr2}$
我喜欢使用集合模块。这对我有用。在
你的代码有几个问题,其中一些已经被指出,而另一些问题(例如在tweet文本中识别标签)没有。下面是一个不包含后一个问题的细节的部分解决方案:
这提供了几个简化,关键在于tweet中的hashtags确实以}不能出现在文本中。在
#
开头(你不希望在dic
中出现),因此不值得分析每一行,因为{然而在其他答案中,它仍然有一个问题的一小部分(除了刚刚注释掉这个最微妙的部分的那个!-)它可以通过部分匹配得到误报。当检查就像
word in linetext
时,问题将是巨大的,例如如果一个单词是cat
,那么即使它出现在非常普通的文本中(它本身或者作为另一个单词的一部分,例如vindicative
),它也会被算作标签。使用'#' +
方法会更好一些,但是前缀匹配仍然会导致误报,例如#catalog
将错误地计算为cat
的命中。在正如一些人建议的那样,正则表达式可以帮助实现这一点。但是,这里有一个
^{pr2}$for w in words
循环体的替代方案。。。在剩下的唯一问题是确定哪些字符可以作为hashtags的一部分,也就是说,集合
chars_acceptable_in_hashes
我没有记住Twitter的规范,所以我不知道它是什么,但你肯定可以找到。请注意,这也适用于行尾,因为line
有没有被剥离,所以它以\n
结尾。它不在可接受的集合中(所以在行尾的hashtag也将“正确终止”)。在主要的问题是,您要迭代文件中每个单词的行,而不是相反。因此,第一个单词将占用文件的所有行,并且每个后续单词将有0个匹配项。在
相反,你应该这样做:
相关问题 更多 >
编程相关推荐