F# How to Write/Read to a CSV File












1














I am working on an assignment using F# where I have to add in a specific student and his information to a large Students.txt file



The Student.txt file contains their lastname, firstname, middle intial, phone number, email, and their gpa



A snippet of the Students.txt file



If I am trying to add in this information and then read from the file:



type Phone = 

type Email =

type StudentInfo =
{ firstName : string;
middleInitial : char option;
lastName : string;
phone : Phone;
email : Email option;
gpa : float }

let addPhone input =

let addEmail input =

let readStudentsFromCSV filename =

let students = readStudentsFromCSV "Students.txt"


I need insight on how to write these functions.
Note: This is only a snippet of my code.










share|improve this question
























  • Given that this a homework... Take a look at the Type Providers! They are gorgeous, just what you need. Here's the CSV Type Provider.
    – psfinaki
    Nov 12 '18 at 1:01
















1














I am working on an assignment using F# where I have to add in a specific student and his information to a large Students.txt file



The Student.txt file contains their lastname, firstname, middle intial, phone number, email, and their gpa



A snippet of the Students.txt file



If I am trying to add in this information and then read from the file:



type Phone = 

type Email =

type StudentInfo =
{ firstName : string;
middleInitial : char option;
lastName : string;
phone : Phone;
email : Email option;
gpa : float }

let addPhone input =

let addEmail input =

let readStudentsFromCSV filename =

let students = readStudentsFromCSV "Students.txt"


I need insight on how to write these functions.
Note: This is only a snippet of my code.










share|improve this question
























  • Given that this a homework... Take a look at the Type Providers! They are gorgeous, just what you need. Here's the CSV Type Provider.
    – psfinaki
    Nov 12 '18 at 1:01














1












1








1







I am working on an assignment using F# where I have to add in a specific student and his information to a large Students.txt file



The Student.txt file contains their lastname, firstname, middle intial, phone number, email, and their gpa



A snippet of the Students.txt file



If I am trying to add in this information and then read from the file:



type Phone = 

type Email =

type StudentInfo =
{ firstName : string;
middleInitial : char option;
lastName : string;
phone : Phone;
email : Email option;
gpa : float }

let addPhone input =

let addEmail input =

let readStudentsFromCSV filename =

let students = readStudentsFromCSV "Students.txt"


I need insight on how to write these functions.
Note: This is only a snippet of my code.










share|improve this question















I am working on an assignment using F# where I have to add in a specific student and his information to a large Students.txt file



The Student.txt file contains their lastname, firstname, middle intial, phone number, email, and their gpa



A snippet of the Students.txt file



If I am trying to add in this information and then read from the file:



type Phone = 

type Email =

type StudentInfo =
{ firstName : string;
middleInitial : char option;
lastName : string;
phone : Phone;
email : Email option;
gpa : float }

let addPhone input =

let addEmail input =

let readStudentsFromCSV filename =

let students = readStudentsFromCSV "Students.txt"


I need insight on how to write these functions.
Note: This is only a snippet of my code.







csv f#






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 12 '18 at 1:00

























asked Nov 12 '18 at 0:01









policy_wizard

153




153












  • Given that this a homework... Take a look at the Type Providers! They are gorgeous, just what you need. Here's the CSV Type Provider.
    – psfinaki
    Nov 12 '18 at 1:01


















  • Given that this a homework... Take a look at the Type Providers! They are gorgeous, just what you need. Here's the CSV Type Provider.
    – psfinaki
    Nov 12 '18 at 1:01
















Given that this a homework... Take a look at the Type Providers! They are gorgeous, just what you need. Here's the CSV Type Provider.
– psfinaki
Nov 12 '18 at 1:01




Given that this a homework... Take a look at the Type Providers! They are gorgeous, just what you need. Here's the CSV Type Provider.
– psfinaki
Nov 12 '18 at 1:01












1 Answer
1






active

oldest

votes


















2














There are a number of options. The main question is whether you want to write your own CSV parsing, or whether you want to use an existing library.



If this is an assignment, it might require you to write your own parser (doing that would probably be a bad idea in the real world, because real world CSV files can be very messy, but it might be fine if your input is very regular). If you were to use a library, the F# Data library is what most people in the F# community would use.




  • F# Data comes with a type provider called CsvProvider which infers the type of rows in a CSV file for you, so you do not have to write explicit type definitions. (Or you can still do that, but then load data into your structures using a simple transformation.)


  • F# Data also has CsvFile type, which just does the parsing, but then returns data as a sequence of rows (which are themselves arrays of string values). This might be nice if you just need something to take care of splitting the lines, but want to do the rest of the work.


  • If you wanted to write CSV parsing on your own, you can use File.ReadAllLines to read individual rows and then row.Split(',') to turn each row into an array of strings using , as the separator. This could work on your file - but it will break if there is any escaping in your file (for example Foo, "a, b", Bar is just three columns!







share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53254469%2ff-how-to-write-read-to-a-csv-file%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    There are a number of options. The main question is whether you want to write your own CSV parsing, or whether you want to use an existing library.



    If this is an assignment, it might require you to write your own parser (doing that would probably be a bad idea in the real world, because real world CSV files can be very messy, but it might be fine if your input is very regular). If you were to use a library, the F# Data library is what most people in the F# community would use.




    • F# Data comes with a type provider called CsvProvider which infers the type of rows in a CSV file for you, so you do not have to write explicit type definitions. (Or you can still do that, but then load data into your structures using a simple transformation.)


    • F# Data also has CsvFile type, which just does the parsing, but then returns data as a sequence of rows (which are themselves arrays of string values). This might be nice if you just need something to take care of splitting the lines, but want to do the rest of the work.


    • If you wanted to write CSV parsing on your own, you can use File.ReadAllLines to read individual rows and then row.Split(',') to turn each row into an array of strings using , as the separator. This could work on your file - but it will break if there is any escaping in your file (for example Foo, "a, b", Bar is just three columns!







    share|improve this answer


























      2














      There are a number of options. The main question is whether you want to write your own CSV parsing, or whether you want to use an existing library.



      If this is an assignment, it might require you to write your own parser (doing that would probably be a bad idea in the real world, because real world CSV files can be very messy, but it might be fine if your input is very regular). If you were to use a library, the F# Data library is what most people in the F# community would use.




      • F# Data comes with a type provider called CsvProvider which infers the type of rows in a CSV file for you, so you do not have to write explicit type definitions. (Or you can still do that, but then load data into your structures using a simple transformation.)


      • F# Data also has CsvFile type, which just does the parsing, but then returns data as a sequence of rows (which are themselves arrays of string values). This might be nice if you just need something to take care of splitting the lines, but want to do the rest of the work.


      • If you wanted to write CSV parsing on your own, you can use File.ReadAllLines to read individual rows and then row.Split(',') to turn each row into an array of strings using , as the separator. This could work on your file - but it will break if there is any escaping in your file (for example Foo, "a, b", Bar is just three columns!







      share|improve this answer
























        2












        2








        2






        There are a number of options. The main question is whether you want to write your own CSV parsing, or whether you want to use an existing library.



        If this is an assignment, it might require you to write your own parser (doing that would probably be a bad idea in the real world, because real world CSV files can be very messy, but it might be fine if your input is very regular). If you were to use a library, the F# Data library is what most people in the F# community would use.




        • F# Data comes with a type provider called CsvProvider which infers the type of rows in a CSV file for you, so you do not have to write explicit type definitions. (Or you can still do that, but then load data into your structures using a simple transformation.)


        • F# Data also has CsvFile type, which just does the parsing, but then returns data as a sequence of rows (which are themselves arrays of string values). This might be nice if you just need something to take care of splitting the lines, but want to do the rest of the work.


        • If you wanted to write CSV parsing on your own, you can use File.ReadAllLines to read individual rows and then row.Split(',') to turn each row into an array of strings using , as the separator. This could work on your file - but it will break if there is any escaping in your file (for example Foo, "a, b", Bar is just three columns!







        share|improve this answer












        There are a number of options. The main question is whether you want to write your own CSV parsing, or whether you want to use an existing library.



        If this is an assignment, it might require you to write your own parser (doing that would probably be a bad idea in the real world, because real world CSV files can be very messy, but it might be fine if your input is very regular). If you were to use a library, the F# Data library is what most people in the F# community would use.




        • F# Data comes with a type provider called CsvProvider which infers the type of rows in a CSV file for you, so you do not have to write explicit type definitions. (Or you can still do that, but then load data into your structures using a simple transformation.)


        • F# Data also has CsvFile type, which just does the parsing, but then returns data as a sequence of rows (which are themselves arrays of string values). This might be nice if you just need something to take care of splitting the lines, but want to do the rest of the work.


        • If you wanted to write CSV parsing on your own, you can use File.ReadAllLines to read individual rows and then row.Split(',') to turn each row into an array of strings using , as the separator. This could work on your file - but it will break if there is any escaping in your file (for example Foo, "a, b", Bar is just three columns!








        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 12 '18 at 11:39









        Tomas Petricek

        198k13288461




        198k13288461






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53254469%2ff-how-to-write-read-to-a-csv-file%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Full-time equivalent

            さくらももこ

            13 indicted, 8 arrested in Calif. drug cartel investigation