F#CSV类型提供程序:如何忽略某些行?

时间:2017-02-28 09:57:33

标签: csv f# f#-data

我是初学者并开始使用FSharp.Data库 http://fsharp.github.io/FSharp.Data/library/CsvProvider.html

let rawfile = CsvFile.Load("mydata.csv")
for row in rawfile.Rows do
       let d = System.DateTime.Parse (row.GetColumn("Date"))
       let p = float (row.GetColumn("Close Price"))
       printfn "%A %A" d p
       price_table.[BTC].Add (d,p)

我有一个csv文件,其最后一行我想忽略因为 它们类似于"这些数据是由......产生的。

顺便说一句,即使我删除了这些行,保存文件,当我再次重新打开那些细胞时,再次出现......粘性的那些!!!

2 个答案:

答案 0 :(得分:0)

CsvFile.Load有一个过载需要TextReader派生的参数。

如果你知道要跳过多少行,你可以在文件上创建StreamReader,你可以跳过ReadLine行。

use reader = StreamReader("mydata.csv")
reader.ReadLine() |> ignore
reader.ReadLine() |> ignore
let rawfile = CsvFile.Load(reader)

答案 1 :(得分:0)

如果您可以将整个scv加载到内存中,那么您可以简单地反转行,跳过您想要的内容,然后(可选)反转。

示例:

let skipNLastValues (n:int) (xs:seq<'a>) =
    xs
    |> Seq.rev
    |> Seq.skip n
    |> Seq.rev

for i in (skipNLastValues 2 {1..10}) do
    printfn "%A" i