F#如何写入/读取CSV文件
我正在使用F#完成一项作业,我必须将一个特定的学生及其信息添加到一个大的Students.txt文件中 Student.txt文件包含他们的姓、名、中间名、电话号码、电子邮件和gpa 如果我试图添加此信息,然后从文件中读取:F#如何写入/读取CSV文件,csv,f#,Csv,F#,我正在使用F#完成一项作业,我必须将一个特定的学生及其信息添加到一个大的Students.txt文件中 Student.txt文件包含他们的姓、名、中间名、电话号码、电子邮件和gpa 如果我试图添加此信息,然后从文件中读取: type Phone = type Email = type StudentInfo = { firstName : string; middleInitial : char option; lastName : string;
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#数据附带一个名为
的类型提供程序,它可以为您推断CSV文件中的行类型,因此您不必编写明确的类型定义。(或者您仍然可以这样做,但随后使用简单的转换将数据加载到您的结构中。)CsvProvider
- F#Data还有
类型,它只进行解析,然后以行序列的形式返回数据(它们本身就是字符串值的数组)。如果您只是需要一些东西来处理拆分行,但希望完成其余的工作,那么这可能会很好CsvFile
- 如果您想自己编写CSV解析,可以使用
读取单个行,然后使用File.ReadAllLines
将每行转换为字符串数组,使用row.Split(',')
作为分隔符。这可能对您的文件有效-但如果文件中有任何转义,它将中断(例如,
只有三列Foo,“a,b”,Bar