当前位置: 首页 > 知识库问答 >
问题:

文件读取和单词计数

艾学海
2023-03-14

我想读一个文件,然后读一串单词或句子,并单独计算这些单词在文件中出现的次数。
示例输入:
filename.txt
Powerful月亮森林天空
示例输出:
Powerful:2
月亮:3
森林: 4
未使用:天空
我有点被困在这里,这就是我得到的

string filename = Console.ReadLine();
        StreamReader stream = File.OpenText(filename);
       
        string input = Console.ReadLine();
        string[] source = filename.Split(new char[] { '.', '?', '!', ' ', ';', ':', ',' }, StringSplitOptions.RemoveEmptyEntries);
        var matchQuery = from word in source
                         where word.ToLowerInvariant() == input.ToLowerInvariant()
                         select word;
        int wordCount = matchQuery.Count();
        Console.WriteLine("{0} occurrences(s) of the search term \"{1}\" were found.", wordCount, input);

共有2个答案

常英资
2023-03-14

我建议匹配,而不是在空白和标点符号上分割(请注意,我们有很多空白)。如果我们把单词定义为

单词是非空的字母序列

我们可以使用一个简单的正则表达式模式:

 \p{L}+

然后你可以预处理文件:

 using System.IO;
 using System.Linq;
 using System.Text.RegularExpressions;

 ...

 Regex regex = new Regex(@"\p{L}+");

 var freqs = File
   .ReadLines(filename)
   .SelectMany(line => regex
      .Matches(line)
      .Cast<Match>()
      .Select(match => match.Value))
   .GroupBy(word => word, StringComparer.OrdinalIgnoreCase)
   .ToDictionary(group => group.Key, group => group.Count());

用户查询时间。同样,我们匹配单词,然后在freqs的帮助下查找发生率:

  var result = regex
    .Matches(Console.ReadLine())
    .Cast<Match>()
    .Select(match => match.Value)
    .Distinct(StringComparer.OrdinalIgnoreCase)
    .Select(word => $"{(freqs.TryGetValue(word, out int count) ? count : 0)} occurrences(s) of {word} found");

  Console.Write(string.Join(Environment.NewLine, result));
端木阳荣
2023-03-14

做这件事有很多方法。其中一个是按Arshad评论的查询分组。如果您逐行读取文件,您也可以使用字典来保存结果。这里有一个例子,但是你必须根据你的要求来调整它:https://stackoverflow.com/a/11967649/7226070

 类似资料:
  • 问题内容: 这应该将行数,单词数和字符数计入文件中。 但这是行不通的。从输出中仅显示。 码: 我不明白发生了什么事。有什么建议? 问题答案: 不同的方法。使用字符串查找行数,单词数和字符数: 注意: 对于其他编码样式,请使用代替。 是需要设置的字符。引用这个和维基

  • 问题内容: 就像标题所说的那样,我试图编写一个程序,该程序可以从文本文件中读取单个单词并将其存储到变量中。我知道如何使用或来读取单曲,但是对于我试图这样做的行不通。一旦输入了单词,我就尝试使用.equals将它们与程序中的其他String变量进行比较,因此最好将其导入为Strings。我也可以将文本文件中的整行作为字符串输入,在这种情况下,我只需要在文件的每一行中输入一个单词即可。如何从文本文件输

  • 问题内容: 假设您有一个像这样的文本文件:http : //www.gutenberg.org/files/17921/17921-8.txt 有没有人有一个好的算法或开放源代码从文本文件中提取单词?如何获得所有单词,同时避免使用特殊字符,并保留诸如“ it’s”之类的内容… 我在用Java工作。谢谢 问题答案: 这听起来像是正则表达式的正确工作。如果您不知道如何开始,以下是一些Java代码,可以

  • 我正在使用扫描仪读取一个阿拉伯语文件,并将文本文件存储在ArrayList中 我有一本字典,里面有一些单词,肯定的和否定的,有thier比率的单词。

  • 问题内容: 我正在尝试编写一个按位读取文件的读取器,但是大文件有问题。我试图读取100 mb的文件,它花了3分钟多的时间,但是仍然有效。 但是,然后我尝试使用500 mb的文件,但它甚至没有启动。由于这一行: 现在,我正在寻找解决方案,但找不到任何解决方案。也许有人解决了它,可以分享一些代码,技巧或想法。 问题答案: 我建议您尝试使用内存映射。 这将使整个文件几乎立即可用(大约10毫秒),并且几乎

  • 问题内容: 我花了一些时间在规划如何使用Python计算文本文件中的某些元素。我已经学习Python几个月了,并且熟悉以下函数; raw_input open Split Lun Printing rsplit() 到目前为止,这是我的代码: 在这一点上,我不确定下一步该怎么做。我觉得最合乎逻辑的方法是先计算行数,计算每行中的单词数,然后计算每个单词中的字符数。但是我遇到的问题之一是试图一次执行所