【问题标题】:String.count() returning 0 even though word exists in file即使文件中存在单词,String.count() 也会返回 0
【发布时间】:2013-04-14 00:58:14
【问题描述】:

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

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

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

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

请帮忙。

【问题讨论】:

    标签: python string substring


    【解决方案1】:

    你有两个电话给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))
    

    【讨论】:

    • 谢谢你。但我插入(if 文件中的短语)语句的唯一原因是因为我的 count 函数一直返回 0,我想检查其他一些语句是否有效。最初,我只有一个 .read() 调用 freq = FILE.read().count("my phrase) if(freq>0): print "found" else: print "not found" 但我得到 0 作为许多短语的结果,即使它们存在于文件中。
    猜你喜欢
    • 2019-10-13
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多