F # Как записать / прочитать в файл CSV - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над заданием, используя F #, где мне нужно добавить конкретного учащегося и его информацию в большой файл Students.txt

Файл Student.txt содержит их фамилию, имя, отчество, номер телефона, адрес электронной почты и их gpa

Фрагмент файла Students.txt

Если я пытаюсь добавить эту информацию, а затем прочитать из файла:

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"

Мне нужно понять, как написать эти функции. Примечание. Это всего лишь фрагмент моего кода.

1 Ответ

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

Есть несколько вариантов. Главный вопрос заключается в том, хотите ли вы написать собственный синтаксический анализ CSV или использовать существующую библиотеку.

Если это задание, вам может потребоваться написать собственный синтаксический анализатор (в реальном мире это может быть плохой идеей, потому что файлы CSV в реальном мире могут быть очень грязными, но это может быть хорошо, если ваш ввод очень регулярно). Если бы вы использовали библиотеку, Библиотека данных F # - это то, что использовало бы большинство людей в сообществе F #.

  • F # Данные поставляются с поставщиком типов по имени CsvProvider, который определяет тип строк в CSV-файле, поэтому вам не нужно писать явные определения типов. (Или вы все еще можете сделать это, но затем загрузить данные в свои структуры с помощью простого преобразования.)

  • F # Данные также имеют тип CsvFile, который просто выполняет синтаксический анализ, но затем возвращает данные в виде последовательности строк (которые сами являются массивами строковых значений). Это может быть хорошо, если вам просто нужно что-то, чтобы позаботиться о разбиении линий, но вы хотите выполнить остальную часть работы.

  • Если вы хотите написать синтаксический анализ CSV самостоятельно, вы можете использовать File.ReadAllLines для чтения отдельных строк, а затем row.Split(','), чтобы превратить каждую строку в массив строк, используя , в качестве разделителя. Это может сработать с вашим файлом - но оно будет разбито, если в вашем файле есть экранирование (например, Foo, "a, b", Bar - это всего три столбца!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...