[英]F# How to Write/Read to a CSV File
我正在使用F#进行作业,必须在其中将特定学生及其信息添加到大的Student.txt文件中
Student.txt文件包含其姓氏,名字,中间字母,电话号码,电子邮件及其gpa
如果我尝试添加此信息,然后从文件中读取:
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"
我需要了解如何编写这些功能。 注意:这只是我的代码的一部分。
有很多选择。 主要问题是您是否要编写自己的CSV解析,还是要使用现有的库。
如果这是一项任务,则可能需要您编写自己的解析器(这样做在现实世界中可能不是一个好主意,因为现实世界中的CSV文件可能非常混乱,但是如果您的输入非常常规,则可能会很好)。 如果你使用的库时, F#数据库是大多数人在F#社区会用什么。
F#Data带有一个称为CsvProvider
的类型提供程序,该提供程序可以为CsvProvider
推断CSV文件中的行类型,因此您不必编写显式的类型定义。 (或者,您仍然可以这样做,但是可以使用简单的转换将数据加载到结构中。)
F#Data也具有CsvFile
类型,该类型仅进行解析,但随后将数据作为一系列行返回(它们本身是字符串值的数组)。 如果您只需要一些东西来分割线,而又想完成其余的工作,那可能会很好。
如果你想写CSV解析你自己,你可以使用File.ReadAllLines
阅读各行,然后row.Split(',')
把每行插入使用字符串数组,
作为分隔符。 这可能对您的文件有效-但如果文件中有任何转义符(例如Foo, "a, b", Bar
仅三列),它将中断。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.