鱼C论坛

 找回密码
 立即注册
查看: 997|回复: 4

新手请教。求多个单词的多篇文件出现次数。

[复制链接]
发表于 2019-2-28 11:33:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
那位大神能帮我把这个代码升级一下:
我的要求:
      这个代码运行后能找到单个单词的在多个文件当中,具体哪几个文件出现和出现的次数。
然而我想得到代码一运行,多个单词,在多个文件当中,每个单词的出现次数(不需要定位)。能解决吗?真心谢谢。
import os
import collections

def search_files(key, detail):
    all_files = os.walk(os.getcwd())
    txt_files = []   #用来存放txt路径

    for root,dirs,files in all_files:
        for each_file in files:
            if os.path.splitext(each_file)[1] == '.txt':
                each_file = os.path.join(root, each_file)
                txt_files.append(each_file)
    for each_txt_file in txt_files:
        with open(each_txt_file) as file1:
            str = file1.read().split("\n")
            print(each_txt_file)
            print("所查询的%s单词出现的次数%s:" % (key, collections.Counter(str)[key]))

key = input('请将该脚本放于待查找的文件夹内,请输入关键字:')
detail = input('请问是否需要打印关键字【%s】在文件中的具体位置(YES/NO):' % key)
search_files(key, detail)

这个运行后结果是:
        请将该脚本放于待查找的文件夹内,请输入关键字:MINU
请问是否需要打印关键字【MINU】在文件中的具体位置(YES/NO):YES
C:\Users\amgalang\PycharmProjects\出现的文本数01\1.txt
所查询的MINU单词出现的次数14:
C:\Users\amgalang\PycharmProjects\出现的文本数01\10.txt
所查询的MINU单词出现的次数9:
C:\Users\amgalang\PycharmProjects\出现的文本数01\11.txt
所查询的MINU单词出现的次数0:
C:\Users\amgalang\PycharmProjects\出现的文本数01\12.txt
所查询的MINU单词出现的次数0:
C:\Users\amgalang\PycharmProjects\出现的文本数01\13.txt

我想一下子获得多个单词的在多个文件当中的出现数,不需要定位。真心感谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-2-28 14:16:35 | 显示全部楼层
函数search_files()不变,后面调用改一下。多个关键词用英文逗号隔开,不要加空格。例:MINU,HHA,QE
  1. key_ori = input('请输入关键字,以,隔开:')
  2. keys = key_ori.split(',')
  3. for each_key in keys:
  4.     detail = input('请问是否需要打印关键字【%s】在文件中的具体位置(YES/NO):' % each_key)
  5.     search_files(each_key, detail)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-28 14:40:44 | 显示全部楼层
shuofxz 发表于 2019-2-28 14:16
函数search_files()不变,后面调用改一下。多个关键词用英文逗号隔开,不要加空格。例:MINU,HHA,QE

   这个代码还是得一个一个查呢,没有全部调出来就比如
单词         出现的文本数
MINU              3
HHA               6
QA                  19


这种的 能否解决呢 谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-28 14:44:56 | 显示全部楼层
shuofxz 发表于 2019-2-28 14:16
函数search_files()不变,后面调用改一下。多个关键词用英文逗号隔开,不要加空格。例:MINU,HHA,QE

就是 我想输入让它读取一个文件,然后找到这个文件中的所有单词的文本出现次数,不一个一个找,希望解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-28 16:18:55 | 显示全部楼层
本帖最后由 Stubborn 于 2019-2-28 16:40 编辑
Amgalang 发表于 2019-2-28 14:44
就是 我想输入让它读取一个文件,然后找到这个文件中的所有单词的文本出现次数,不一个一个找,希望解答


这个改很难吗,老铁,前面分隔好之后,你传一个一个列表到函数,然后分开处理嘛~ 之前那个你传进去的,只有在打印的时候用到,改还不简单 写给你的代码都不看为什么的吗   collections.Counter(str)这个是每个文本已经统计好的所有单词字典,可以直接查询调佣的,知道吗?
  1. keys = key.split(',')


  2.     for each_txt_file in txt_files:
  3.         with open(each_txt_file) as file1:
  4.             str = file1.read().split("\n")
  5.             print(each_txt_file)
  6.             for key_ori in key:
  7.                 print("所查询的%s单词出现的次数%s:" % (key_ori, collections.Counter(str)[key_ori]))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-14 04:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表