F#解析CSV文件 - 找出哪行错误

Lib*_*tal 1 csv filehelpers f# parsing

我从我发现的一些资源中编写了这个脚本.它工作但我有些文件我有问题.我是F#的新手,所以如何使用FileHelpersException更改行以获得确切的行问题?谢谢

// Learn more about F# at http://fsharp.net
// See the 'F# Tutorial' project for more help.
open FileHelpers  
open System

[<DelimitedRecord(",")>]
type CsvRecord =
    class
        val field1 : string
        val field2 : string
        val field3 : int
        new () = {
        field1 = ""
        field2 = ""
        field3 = 0
        }
    end

[<EntryPoint>]
let main argv = 
    use file = System.IO.File.CreateText("result.txt")
    let engine = new FileHelperEngine<CsvRecord>()
    engine.Encoding <- new Text.UTF8Encoding()
    let res = 
       try
          engine.ReadFile("test.csv")
       with
          | :? FileHelpersException -> Array.empty<CsvRecord>
    for record in res do
         fprintfn file "%s" record.field1
    printf "DONE!"
    let s = Console.ReadLine()
    0 // return an integer exit code
Run Code Online (Sandbox Code Playgroud)

Gus*_*rra 5

我建议你改用CsvTypeProvider.当出现不匹配时,错误消息会指出出错的行

open FSharp.Data

[<EntryPoint>]
let main argv = 
    use file = System.IO.File.CreateText("result.txt")
    let csv = new CsvProvider<"test.csv">()
    for record in csv.Data do
        fprintfn file "%s" record.field1
Run Code Online (Sandbox Code Playgroud)

如果要忽略有错误的行,只需将其IgnoreErrors=true作为额外参数传递给CsvProvider