【问题标题】:F# CSV Provider type mismatchF# CSV 提供程序类型不匹配
【发布时间】:2014-10-02 15:23:28
【问题描述】:

我在使用 F# CSV 类型提供程序时遇到问题,并且出现类型不匹配。我是 F# 的新手,所以这很可能是一个基本问题。我已将文件放在 blob 存储中,以便您可以更轻松地复制。 https://analyzethis.blob.core.windows.net/voterinfo/WakeCountyVoterCSV 注意:您需要将提供程序文件位置更改为您的下载位置才能准确复制。您也可以从 blob 动态加载。

我得到的错误是:

类型不匹配:需要一个 seq.Row> -> int

但是给了一个

seq.Row> -> 单元

类型 int 与单位不匹配

代码:

open FSharp.Data
type voterType = CsvProvider<"C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv", AssumeMissingValues=true, MissingValues="">

[<EntryPoint>]
let main argv = 
    let voterData = voterType.Parse("C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv")
    voterData.Rows |> Seq.iter(fun r -> printfn "%A" r)

非常感谢任何帮助!

谢谢,

~大卫

【问题讨论】:

标签: csv f# analytics type-providers f#-data


【解决方案1】:

main 的预期返回类型为 int,因此您在 main 函数中的最后一行代码必须是 int 表达式

open FSharp.Data
type voterType = CsvProvider<"C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv",   AssumeMissingValues=true, MissingValues="">

[<EntryPoint>]
let main argv = 
    let voterData = voterType.Parse("C:\\Users\\dacrook\\Documents\\vrdb\\VoterCSVData2.csv")
    voterData.Rows |> Seq.iter(fun r -> printfn "%A" r)
    0  // <--- Add an int as the return value

【讨论】:

  • 所以我继续添加了 0 和如下所示的 readline,但是它没有打印有关行的信息。将它放在交互式中会产生输出: val it: unit= ()
  • 我刚刚意识到 .Parse() 用于解析传入的字符串 csv。Load 应该用于文件和 uri。不幸的是,在尝试使用 .Load 时,它告诉我只支持 Web 位置。
  • 看看stackoverflow.com/questions/25449774/…,因为我认为它可能是相关的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 2013-08-01
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
  • 2012-08-20
相关资源
最近更新 更多