统计文件中单词的频率,给出前N的单词

package test10;

import java.io.*;
import java.util.*;
import java.util.Map.Entry;

public class Frequency
{
    public static int n=0;//
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    String s;
    int count=0;
    int num=1;
    //作为FileReader和FileWriter读取的对象
    String file1="C:\\Users\\DELL\\Desktop\\Harry Potter and the Sorcerer‘s Stone.txt";
   // String file2="d:/danci.txt";
    try
    {
      BufferedReader a=new BufferedReader(new FileReader(file1));
      //BufferedWriter b=new BufferedWriter(new FileWriter(file2));
      StringBuffer c=new StringBuffer();
      //将文件内容存入StringBuffer中
      while((s = a.readLine()) != null)
      {
            //用于拼接字符串
            c.append(s);
      }
      //将StringBuffer转换成String,然后再将所有字符转化成小写字符
      String m=c.toString().toLowerCase();
      //匹配由数字和26个字母组成的字符串
      String [] d=m.split("[^a-zA-Z0-9]+");
      //遍历数组将其存入Map<String, Integer>中
      Map<String , Integer> myTreeMap=new  TreeMap<String, Integer>();
      for(int i = 0; i < d.length; i++) {
          //containsKey()方法用于检查特定键是否在TreeMap中映射
            if(myTreeMap.containsKey(d[i])) {
                count = myTreeMap.get(d[i]);
                myTreeMap.put(d[i], count + 1);
            }
            else {
                myTreeMap.put(d[i], 1);
            }
        }
    //通过比较器实现排序
      List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(myTreeMap.entrySet());
    //按降序排序
      Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {

            public int compare(Entry<String, Integer> k1, Entry<String, Integer> k2) {
                //返回两个单词出现次数较多的那个单词的出现次数
                return k2.getValue().compareTo(k1.getValue());
            }

        });
       System.out.println("请输入N:");
        n=sc.nextInt();
      for(Map.Entry<String, Integer> map : list) {
            if(num <= n) {
               //按内容输出到指定文件中去
               // b.write("出现次数第" + num + "的单词为:" + map.getKey() + ",出现频率为" + map.getValue() + "次");
                //换行
              //  b.newLine();
                //输出到程序控制台
                System.out.println(map.getKey() + ":" + map.getValue());
                num++;
            }
            //输出完毕退出
            else break;
        }
        //关闭文件指针
        a.close();
       // b.close();
    }
    catch(FileNotFoundException e)
    {
        System.out.println("找不到指定文件");
    }
    catch(IOException e)
    {
        System.out.println("文件读取错误");
    }
    System.out.println("输出完成");
}
}

  

原文地址:https://www.cnblogs.com/xiatian21/p/11794773.html

时间: 2024-10-11 21:13:18

统计文件中单词的频率,给出前N的单词的相关文章

简单的方法来统计文件中单词和各种标点符号个数

此小程序使用最基本的方法来统计文本中英文单词的个数,想法也比较简单: (1)从文本中文本读取内容,使用BufferedReader类每次读取一行并添加到StringBuffer类型变量中, 最后StringBuffer类型变量即为文本的内容,如StringBuffer sb: (2)把sb的内容全部转化成小写字母(或大写字母): (3)统计文件中各种标点符号个数: (4)把所有标点符号统一替换成一种标点符号,如替换成逗号 (5)替换后的文本使用字符串的分割函数来获取返回的字符串数组的长度,此长度

统计文件中制定词汇出现的次数

统计文件中"牛客"出现的次数: grep -o "查找单词" "查找的文件"| wc -l grep -o "查找单词" "查找的文件": -o 表示精确匹配,没有-o,只会显示要查找单词所出现的那一行 来自为知笔记(Wiz)

学c语言做练习之?统计文件中字符的个数

统计文件中字符的个数(采用命令行参数) #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) {  char ch;  FILE *fp;  long count=0;    if(argc !=2)  {   printf("文件名是:%s\n",argv[0]);   exit(EXIT_FAILURE);  }  if ((fp=fopen(argv[1],"r

使用IndexOf统计文件中某一词语出现次数

1 #region 统计文件中某一词语出现次数. 2 3 while (true) { 4 Console.WriteLine("请输入要查询的词语:"); 5 string word = Console.ReadLine(); 6 string[] novelArr = File.ReadAllLines("xiyou.txt", Encoding.Default); 7 int count = 0;//计数变量 8 int index = 0;//每行的 初始索

Linux命令-统计文件中的字节数、字数、行数:wc

Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数.字数.行数,并将统计结果显示输出.该命令统计指定文件中的字节数.字数.行数.如果没有给出文件名,则从标准输入读取.wc同时也给出所指定文件的总统计数. 3.命令参数: -c 统计字节数. -l 统计行数. -m 统计字符数.这个标志不能与 -c 标志一起使用. -w 统计字数.一个字被定义为由空白.

统计文件中单词个数

import sys import string #import collections if len(sys.argv) == 1 or sys.argv[1] in {"-h", "--help"}: print("usage: uniqueword filename_1 filename_2 ... filename_n") sys.exit() else: words = {} # words = collections.defaultd

python编程:统计文件中单词出现次数

f=open("2.txt",'r')ll=f.read()'''将空格都取代为逗号,方便后面的split()'''ll=ll.replace(" ",',') '''防止由于文档编辑不规范出现双逗号的情况'''ll=ll.replace(",,",',')l=ll.split("\n")rows=[]dic={}for i in l: row=i.split(",") rows.append(row)fo

Linux统计文件中单词出现的次数

grep -E "\b[[:alpha:]]+\b"  /etc/fstab  -o | sort | uniq -c -E 使用正则进行匹配 \b : backspace 退格 print 参数 表示每行匹配完了回车 [[:alpha:]] : 代表所有字符 sort 去重 uniq -c 排序 -c 行首加出现的次数 原文地址:https://www.cnblogs.com/S--S/p/10224417.html

WPF窗体视图中绑定Resources文件中字符串时,抛出:System.Windows.Markup.StaticExtension

问题描述: 在Resources.resx定义了一个静态字符串字段Title,并在WPF窗体视图中绑定为窗体的标题: Title="{x:Static local:Resources.Title}" 但是,在运行应用时,抛出System.Windows.Markup.StaticExtension异常. 原因: 解决方案: 将Resources.resx的访问修饰符由internal修改为public.