String.count()返回0,即使文件中存在单词

时间:2013-04-14 00:58:14

标签: python string substring

因此,这是一个简单的代码,试图在许多文件中找到短语(“各种资产”)的出现频率。

import codecs
import glob
import os.path

filelocation = "C:\\Users\\Shoi\\Desktop\\mark project\\BITs\\*.txt"

for filepath in glob.glob(filelocation): # for each file
    FILE = codecs.open(filepath, 'r', encoding="utf-8")
    if ("every kind of asset" in FILE.read().lower()):
        print ("Found in " + os.path.basename(filepath))
        freq = FILE.read().lower().count("every kind of asset")
        print(freq)
    else:
        print ("not found in " + os.path.basename(filepath))

但是,即使在某些文件中找到该短语(打印出“找到”文件) - 计数功能也会返回并始终打印0。

此代码仅搜索单个短语。当我遍历一个短语列表,搜索所有文件中的每个短语时 - count函数为某些短语返回完全正确的频率结果,但对其他短语返回0,即使该短语存在于文件中并且它打印“found”< / p>

请帮忙。

1 个答案:

答案 0 :(得分:5)

你有FILE.read()的两个电话。在第一个之后,光标将位于文件的末尾,因此第二个调用将返回一个空字符串,该字符串不包含您正在查找的字符串。

阅读内容一次并将其存储在变量中:

for filepath in glob.glob(filelocation): # for each file
    FILE = codecs.open(filepath, 'r', encoding="utf-8")
    contents = FILE.read().lower()
    if "every kind of asset" in contents:
        print("Found in " + os.path.basename(filepath))
        freq = contents.count("every kind of asset")
        print(freq)
    else:
        print("not found in " + os.path.basename(filepath))