Чтение данных CSV в F # - PullRequest
       42

Чтение данных CSV в F #

0 голосов
/ 24 ноября 2018

Я студент, пытающийся выучить 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, которому нужна чашка кофе, Джо

1 Ответ

0 голосов
/ 24 ноября 2018

Самый простой способ выполнять различные задачи подсчета, поиска и фильтрации по коллекции данных (например, по строкам файла CSV в вашем примере) - это использовать встроенные функции более высокого порядка для обработки коллекции.

В статье есть очень хороший обзор Выбор между функциями сбора Скотта Влашина, в котором также есть множество практических примеров, которые могут вам помочь.

В вашем примере вы ужеиспользуя Seq.head, который дает вам первый элемент из последовательности:

students.Rows |> Seq.head  

Это очень хорошее начало.Вы можете делать много других вещей, используя другие функции, доступные в модуле Seq.Если вы наберете Seq, а затем ., большинство редакторов покажет вам список автозаполнения со всеми доступными функциями (и в приведенной выше статье описано, что они делают).

Например, если вы хотитесделайте подсчет, Seq.length может быть полезно.Для различных задач фильтрации попробуйте Seq.filter и, наконец, для поиска есть Seq.find.

...