-1
def countsfunc(path, stri):
    f = open('C:\Users....\sometextfile.txt','r')
    dicts = {}
    for line in f:
        words = line.split()
        dicts[words[1]] = dictst.get(words[0], 0) + 1
        print countdict[word[0]]
    f.close()

我做了一个函数,需要检查文本中每一行的第二个单词是否等于“stri”。但我也希望这个函数能计算它发生的次数。例如文本是这样的:

老麦克唐纳有一个农场,EIEIO。

老麦克唐纳有一个农场,EIEIO。

老麦克唐纳有一个农场,EIEIO。

这里哞哞,那里哞哞,到处哞哞

如果这显示在外壳中: countsfunc(sometextfile, MacDonald) 那么它应该打印我“3”

如果: countsfunc(sometextfile, a) 那么只有“1”

如果: countsfunc(sometextfile, Mac) 那么“0”。

有人能帮助我吗?我的代码不是那么好,我得到了别的东西。非常欢迎您查看。谢谢。

编辑: 谢谢大家,我找到了解决方案。不管怎么说,还是要谢谢你

4

3 回答 3

1
def countsfunc(path, string):
    counter = 0
    with open(path) as f:
        for line in f:
            words = line.split()
            if words[1] == string: #check if the second word is equal to string
                counter+= 1
    return counter

将文件路径和你的话传递给函数。该函数将返回计数器编号。

于 2013-11-13T21:47:20.980 回答
0

作为一个班轮:

def count_2nd_words(lines, match):
    return sum(line.split()[1] == match for line in lines)

with open('C:\Users....\sometextfile.txt','r') as f:
    print count_2nd_words(f, 'MacDonald')
于 2013-11-13T21:51:31.657 回答
0

我的pythonic代码高尔夫版本:

from collections import Counter
def countsfunc(path,string):
    file = open(path,'r')
    second_words  = [line.rstrip().split(' ')[1] for line in file if line!='\n']
    print Counter(second_words)[string]
于 2013-11-13T22:27:54.933 回答