如何计算有多少行有一个特定的单词

时间:2018-01-29 22:43:59

标签: python

我不确定if语句是否错误?我试图分割每一行并遍历每个索引并找到'乌鸦'并返回计数。

def count_word(file_url, word):
    r = requests.get(file_url, stream=True)
    count = 0

    for line in r.iter_lines():
        words = line.split()
        if line[1:] == 'the raven':
            count += 1
    return count

2 个答案:

答案 0 :(得分:2)

当你这样做时

`words = line.split()`

您为变量words分配了一个字符串列表 - 该行中的非空白字符串。但在此之后你还没有对words做任何事情。相反,你做:

if line[1:] == 'the raven':

检查整行,减去第一个字符,是否真的是#raven'。

(编辑处理unicode / bytes):如果你想加总乌鸦的总次数'出现在整个文件中,您可以跳过splitif并直接从每一行获取出现次数。因为请求会为您提供bytes个对象(在python 3中)或unicode个对象(在python 2中),所以您需要首先使用适当的编码对行进行解码:

for line in r.iter_lines():
    count += line.decode('utf-8').count('the raven')

如果您想要返回“乌鸦”中的总行数。出现了,你可以这样做:

for line in r.iter_lines():
    if 'the raven' in line.decode('utf-8'):
        count += 1

您可能需要选择不同的编码,具体取决于您的数据来源。

答案 1 :(得分:1)

以下对代码的轻微修改将允许您计算word定义的文件中参数file_url定义的任何单词。

def count_word(file_url, word):
    r = requests.get(file_url, stream=True)
    count = 0

    for line in r.iter_lines():
        count += line.count(word)

    return count