繁体   English   中英

从文件中读取并计数列表中的单词

[英]Read from a file and count the words in a list

我正在使用C#读取csv文件,并将所有单词吐在换行符中。 然后,我想计算该文件中每个单词在列表中重复的次数。 我得到的输出不算单词。 请参阅以下信息

csv文件内容:她很好,他可以很好哦,哇,太好了

这是代码:

using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var list = File.ReadAllLines("Try3.csv");
        foreach (string line in File.ReadAllLines("Try3.csv"))

        { 
            string[] parts = line.Split(' ');
            foreach (string part in parts)
            {

                var q = list.GroupBy(x => x)
                    .Select(g => new {Value = g.Key, Count = g.Count()})
                    .OrderByDescending(x=>x.Count);
                foreach (var x in q){
                Console.WriteLine("{0}",part+" Count:"+ x.Count);
        }


    }
    }   
  }
   }

这是我得到的输出:

[ 输出 ]

有什么想法吗?

尝试这个

var results = File.ReadLines("Try3.cvs")
                  .SelectMany(line => line.Split(' '))
                  .GrooupBy(word => word)
                  .ToDictionary(g => g.Key, g => g.Count());

首先使用File.ReadLines将意味着您一次只能读取一行,而不是在处理之前将整个文件加载到内存中。 如果文件很大,这将很有帮助。 然后,将行拆分成单词,然后对这些单词进行分组,以创建一个字典,该字典将在关键字处包含单词并将其在文件中显示的次数作为值,这只是一个简单的问题。

为了按计数顺序获得结果,您可以选择执行以下操作。

var results = File.ReadLines("Try3.cvs")
                  .SelectMany(line => line.Split(' '))
                  .GrooupBy(word => word)
                  .OrderByDescending(g => g.Count())
                  .Select(g => new { Word = g.Key, Count = g.Count() })
                  .ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM