2011-02-13 109 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分裂,並得到列的值