【问题标题】:Reading csv Data in F#在 F# 中读取 csv 数据
【发布时间】:2018-11-23 22:33:03
【问题描述】:

我是一名试图为我的班级学习 F# 的学生。我自己一直在稳步前进,但我遇到了一个我无法解决的问题。我被分配了读取数据并将数据添加到 CSV 数据库文件的任务。我已经想出了如何使用 F Sharp.Data 将数据分类为列和行,但是我很难弄清楚如何计算项目并在列表中搜索以找到我需要的数据。我是一个视觉学习者,所以如果我能看一些对字符串和浮点数的类似列表进行排序的示例,我可能会自己弄清楚。

这是我目前所拥有的代码(对于我在这个网站上发布代码的能力还不是最好的草率,我深表歉意)

open System.IO
open System.Net
open F Sharp.Data
open System

[<Literal>]    
let Template = __SOURCE_DIRECTORY__ + @"\students.txt"  // Creating the directory

type Students = CsvProvider< Template >                 // I can format the list using FSharp.Data here

let students = Students.Load(Template)                  
let FirstRow = students.Rows |> Seq.head                //Creating the header
let TMP = 0
let UTG = 0         //counter vars for later use

for rows in students.Rows do        // Reading list correctly now have to   figure out how to count elements
        printfn "%A" rows.Last

//printfn "%A" TMP
//let tmp = Students.Parse                  //Graveyard of Trial and ERRO
//let tst = 0
//for Rows in students do
  // tst = tst + 1

从我的代码中可以看出,我已将列表排序为列和行。如果有人能告诉我如何做计数器并在列表中搜索特定项目将不胜感激。

我知道很多人只是在这个网站上转储作业并期望人们去做,这太糟糕了。如果你不自己做作业,你就不会学习。我只是需要一些帮助来更好地理解它。

最好的问候 - 需要一杯咖啡的 CS 专业人士,乔

【问题讨论】:

    标签: f# computer-science f#-interactive f#-data c#-to-f#


    【解决方案1】:

    对数据集合(例如您的示例中的 CSV 文件的行)执行各种计数、搜索和过滤任务的最简单方法是使用内置的高阶函数进行集合处理。

    Scott Wlaschin 的文章 Choosing between collection functions 中有一个很好的概述,其中还有许多可以帮助您的实际示例。

    在您的示例中,您已经在使用Seq.head,它为您提供了序列中的第一项:

    students.Rows |> Seq.head  
    

    这是一个很好的开始。您可以使用Seq 模块中提供的其他功能来做许多其他事情。如果您输入Seq,然后输入.,大多数编辑器会向您显示一个包含所有可用功能的自动完成列表(上面的文章记录了它们的作用)。

    例如,如果您想进行计数,Seq.length 可能会很有用。对于各种过滤任务,尝试Seq.filter,最后,搜索有Seq.find

    【讨论】:

    • 非常感谢您引导我阅读这篇文章。浏览实际示例是我的首选学习方式,本文对此很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2015-02-07
    • 2015-01-12
    相关资源
    最近更新 更多