Parse CSV vers Dictionary

Utilisateur anonyme - 26 sept. 2011 à 14:36
cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 - 29 sept. 2011 à 19:12
Bonjour,

Je dois parser un csv vers un dictionary pour ensuite utiliser les données dans un graphique.

Je rencontre un problème au moment de l’exécution du code du parse, je n'ai jamais utilisé de Dictionary, du coup je suis pas certain que ce que j'ai fait est bon.

VOila un ligne de mon CSV:
"ClusterLabo";"cpu.usagemhz.average";"16/08/2011";"217,666666666667";"MHz"


Et voila mon code:

private string _path = String.Empty;

        private Dictionary _AverageCPU = new Dictionary();
        public Dictionary AverageCPU
        {
            get { return _AverageCPU; }
            set { _AverageCPU = value; }
        }

        private Dictionary<DateTime, int> _DateCPU = new Dictionary<DateTime, int>();
        public Dictionary<DateTime, int> DateCPU
        {
            get { return _DateCPU; }
            set { _DateCPU = value; }
        }

        private Dictionary _MaxCPU = new Dictionary();
        public Dictionary MaxCPU
        {
            get { return _MaxCPU; }
            set { _MaxCPU = value; }
        }

        private Dictionary<Char, char> _NomClust = new Dictionary<Char, char>();
        public Dictionary<Char, char> NomClust
        {
            get { return _NomClust; }
            set { _NomClust = value; }
        }

        //private Dictionary<DateTime, char> _Mhz = new Dictionary<DateTime, char>();
        //public Dictionary<DateTime, char> Mhz
        //{
        //    get { return _Mhz; }
        //    set { _Mhz = value; }
        //}



        public ParseClusterGraphCPU(string _path)
        {
            this._path = _path;
        }

        public ParseClusterGraphCPU()
        {
            // TODO: Complete member initialization
        }

        public void ParseFile()
        {
            //FileStream aFile = new FileStream(_path, FileMode.Open);
            FileStream FileAverageCPU = new FileStream("c:\\csv\\ClusterGraphCPU.csv", FileMode.Open);
            StreamReader srClusterAverageCPU = new StreamReader(FileAverageCPU);
            while (srClusterAverageCPU.Peek() != -1)
            {
                srClusterAverageCPU.ReadLine();
                string _cursor = srClusterAverageCPU.ReadLine();
                char[] _splitter = new char[] { ';' };
                string[] _line = _cursor.Split(_splitter);
                //string temp = _line.Replace(""", ""); 

                _DateCPU.Add(DateTime.Parse(_line[2]), 12);
                string aNum "123"; float bNum Convert.ToSingle(aNum);
                _AverageCPU.Add(Int32.Parse(_line[3]), 12);
                string cNum "456"; float dNum Convert.ToSingle(cNum);


                _NomClust.Add(Char.Parse(_line[0]), 'X');
                string eNum "X"; char fNum Convert.ToChar(eNum);
                //_Mhz.Add(DateTime.Parse(_line[2]), Char.Parse(_line[4]));
                //_perfCPU.Add(DateTime.Parse(_line[2]), Int32.Parse(_line[3]));
           
            }
            srClusterAverageCPU.Close();
                }
            }
        }
    


Le code bloque à la ligne
_AverageCPU.Add(Int32.Parse(_line[3]), 12);


Je dois récupérer la date, la value (217,6..) et j'imagine le nom du cluster si jamais il y en a plusieurs.

Quelqu'un peut m'aider svp ?

Merci beaucoup.
A voir également:

1 réponse

cs_MoH008 Messages postés 238 Date d'inscription lundi 2 mars 2009 Statut Membre Dernière intervention 29 septembre 2011 1
29 sept. 2011 à 19:12
Bonjour,

Si je ne me trompe pas, ton split devrait te donner les valeurs suivantes :

line 0 : "ClusterLabo"
line 1 : "cpu.usagemhz.average"
line 2 : "16/08/2011"
line 3 : "217,666666666667"
line 4 : "MHz"

Je suis surpris que le DateTime.Parse n'est pas généré une exception déjà !
Tu as pensé à retirer les guillemets ?
Tu as pensé à remplacer 217,66 par 217.66 ?


==============================================
Possible meet Impossible to become...Possimpible
==============================================
0