2011-02-13 4 views
0

J'essaye d'analyser les fichiers csv à partir de google trends, mais il ne semble pas y avoir de délimiteur entre les colonnes? Y a-t-il un moyen de faire en sorte que cela fonctionne afin que je puisse séparer les données en colonnes après l'analyse, ou est ce que je peux faire de mieux pour avoir chaque ligne dans une colonne.C# parse google trends csv pas de délimiteur apparent

J'ai essayé de nombreux lecteurs csv: http://www.codeproject.com/KB/database/CsvReader.aspx http://www.stellman-greene.com/CSVReader/

Je pourrais essayer de les données sous-chaîne dans chaque ligne, mais qui semble comme un très mauvaise solution.

Exemple de fichier csv de Google Trends: http://www.google.com/trends/viz?q=stackoverflow&date=all&geo=all&graph=all_csv&sort=0&sa=N

Quelqu'un at-il des idées?

Répondre

2

Il me semble que les colonnes sont délimitées par des tabulations (U + 0009), n'est-ce pas? Il suffit de faire

using (var reader = new StreamReader(@"trends.csv", true)) 
{ 
    string line; 
    while ((line = reader.ReadLine()) != null) 
    { 
     var items = line.Split('\t'); 
     if (items.Length == 3) // recognizing the header etc. left as an exercise for the reader 
     { 
      Console.WriteLine("Date: {0}, value = {1}, error = {2}", items[0], items[1], items[2]); 
     } 
    } 
} 
+0

Merci, vous me avez sauvé une tonne de temps. J'ai raté aveuglément que les délimiteurs étaient des onglets. Impressionnant – user603682

1

On dirait que c'est codé en UTF-16 avec un délimiteur de tabulation (U + 0009).

1

Il y a 2 questions possibles pour lesquelles il ne s'analysables bien par ces bibliothèques:

  1. Les 4 premières lignes pourraient « truc » ces parseurs en leur faisant croire il n'y a que 2 colonnes

  2. Ce n'est pas vraiment un fichier CSV (Comma-Separated Values), les onglets sont utilisés à la place des virgules


enter image description here


Il est facile et simple d'écrire votre propre analyseur pour ce cas particulier (il n'y a pas échappé onglets valeurs):

  1. Ouvrez le fichier

  2. Passer les 5 premières lignes

  3. Pour chaque ligne que vous lisez, divisé par \t et obtenir la colonne des valeurs