Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F#CSV类型提供程序:如何忽略某些行?_Csv_F#_F# Data - Fatal编程技术网

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

F#CSV类型提供程序:如何忽略某些行?,csv,f#,f#-data,Csv,F#,F# Data,我是一个初学者,开始使用FSharp.datalibrary 我有一个csv文件,我想忽略它的最后一行,因为 它们类似于“这些数据是由……产生的” 顺便说一下,即使我删除了这些行,保存文件,当我再次打开这些单元格时,它们会重新出现。。。粘性的 CsvFile.Load有一个重载,它接受一个文本阅读器派生的参数 如果知道要跳过多少行,可以在文件上创建StreamReader,也可以使用ReadLine跳过行 use reader = StreamReader("mydata.csv") read

我是一个初学者,开始使用FSharp.datalibrary

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


顺便说一下,即使我删除了这些行,保存文件,当我再次打开这些单元格时,它们会重新出现。。。粘性的

CsvFile.Load有一个重载,它接受一个
文本阅读器
派生的参数

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

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

如果您可以将整个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

let skipNLastValues(n:int)(xs:seq)我认为CsvProvider不会在末尾跳过行,但您可以始终使用
rows.Take(x)
,或应用筛选器获取必要的数据。还有三条注释:1.您可能希望尝试使用来正确键入列,2.它有一个将跳过不符合条件的行的
IgnoreErrors=true
选项,3.如果您用“[]装饰F#记录,您可能希望尝试使用IgnoreFirst和IgnoreLast选项`Filehelpers工作得很好。CSV提供程序和解析器(您正在使用的)都不可用可以跳过最后几行。请尝试设置
ignoreErrors
参数以忽略最后几行。这只跳过第一行,CsvFile已经为其提供了一个选项
skipRows
。仅向前的文本读取器不能跳过页脚行,因为它不知道有多少行是左撇子。应该更好地阅读问题。是的,您需要一个预先读取的自定义阅读器,并在空白行之前标记结束,或者将所有行读取到一个数组中,切掉最后一行,然后将它们放回一个字符串中,以用于String Reader实例。
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