【问题标题】:CSVProvider start reading csv at specific rowCSVProvider 开始在特定行读取 csv
【发布时间】:2016-03-08 17:07:42
【问题描述】:

我想使用 FSharp.Data CSVProvider 读取 csv 文件。

数据如下:

;Datum;Von;bis;MW
Maximum;16.10.2015;19:00;19:15;9268,000
Minimum;26.12.2015;13:30;13:45;-5195,000

"Datum";"Von";"bis";"Vertikale Netzlast [MW]";
01.01.2015;00:00;00:15;1.216;
01.01.2015;00:15;00:30;1.121;
01.01.2015;00:30;00:45;1.090;
01.01.2015;00:45;01:00;981; 

我想使用以下代码:

let csvValues = CsvProvider<"http://ws.50hertz.com/web01/api/PhotovoltaicForecast/DownloadFile?fileName=2015.csv&callback=?", ";">.GetSample()

如果第一列包含“基准”,我如何开始读取第 5 行的文件?

【问题讨论】:

  • @GuyCoder 首先我不是新手,其次我几乎接受了所有问题的正确答案?你指的是哪个问题!?
  • 您应该在关键字slice 上搜索列表或序列。这应该会给你一个想法。
  • 你的权利。我没有看到其他页面。
  • 看起来 CSVProvider 使用 Skip 和/或 Take 进行切片 请参阅:F# Data: CSV Type Provider 下转换 CSV 文件
  • @GuyCoder 是的,我以前发现过,但我犯了一个错误。我不得不否定 SkipWhile 中的 bool 参数。现在它正在工作。

标签: csv f# f#-data


【解决方案1】:

它正在使用 SkipWhile:

let csvValues = CsvProvider<"http://ws.50hertz.com/web01/api/PhotovoltaicForecast/DownloadFile?fileName=2015.csv&callback=?", ";", IgnoreErrors=true>.GetSample()
                    .SkipWhile(fun r -> not (r.Column1.Contains("Datum")))

或者这也有效,在构造函数中可以选择跳过行:

let csvValues = CsvProvider<"http://ws.50hertz.com/web01/api/PhotovoltaicForecast/DownloadFile?fileName=2015.csv&callback=?", ";", IgnoreErrors=true, SkipRows=3>.GetSample()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-15
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2013-05-11
    相关资源
    最近更新 更多