2011-02-13 64 views
0

我试图从谷歌趋势分析csv文件,但似乎没有任何列之间的分隔符?有没有什么办法可以解决这个问题,这样我就可以在解析后将数据分离到列中,或者我可以做的只是将每行放在一列中。c#解析谷歌趋势csv没有明显的分隔符

我已经试过无数读者的CSV: http://www.codeproject.com/KB/database/CsvReader.aspx http://www.stellman-greene.com/CSVReader/

我可以尝试每一行中串出的数据,但是,似乎是一个很差的解决方案。从谷歌趋势

csv文件示例: http://www.google.com/trends/viz?q=stackoverflow&date=all&geo=all&graph=all_csv&sort=0&sa=N

任何人有什么想法?

回答

2

在我看来,列是用制表符(U + 0009)分隔的,不是吗?只要做到

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

谢谢你救了我大量的时间。我不知何故盲目地错过了分隔符是标签。真棒 – user603682 2011-02-13 12:57:27

1

在我看来,它使用UTF-16编码并带有制表符分隔符(U + 0009)。

1

有2个可能出现的问题,为什么它不会被那些库分析得好:

  1. 第4行可能可能 “绝招”的解析器相信 只有2列

  2. 这是不是一个真正的CSV (Comma-Separated Values)文件,标签被用来代替逗号


enter image description here


它很容易和简单的编写自己的解析器这种特殊情况下(没有逃过值选项卡):

  1. 打开文件

  2. 跳过前5行

  3. 对于每一个你读线,\t分裂,并得到列的值