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

标签 python string substring

所以这是一个简单的代码,试图找出一个短语(“每种 Assets ”)在多个文件中出现的频率。

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))

但是,即使在某些文件中找到了该短语(打印了“Found in”文件)- 计数函数仍会返回并始终打印 0。

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

请帮忙。

最佳答案

您已经调用了两次 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))

关于python - String.count() 返回 0,即使文件中存在单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994604/

相关文章:

Java,返回int的格式化字符串

char数组,为什么我必须 "dereference"单个字符的字符串来给它赋值

regex - 不要提取错误的子串/数字

java - Java 中的 Python 拆分语义

python - 用python将两个音频文件混合在一起

使用 bs4 的 Python 网页抓取不适用于类 pg-bodyCopy has-apos

string - 从文件中读取 URL 字符串列表并查找前 10 个最常阅读的 URL

c# - 如何从字符串中获取变量

java - 子字符串的内存问题

python - 属性错误 : 'DisabledBackend' object has no attribute '_get_task_meta_for'