csv - F# 如何写入/读取 CSV 文件
问题描述
我正在使用 F# 进行作业,我必须将特定学生及其信息添加到一个大的 Students.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
,它可以为您推断 CSV 文件中的行类型,因此您不必编写显式类型定义。(或者您仍然可以这样做,但随后使用简单的转换将数据加载到您的结构中。)F# Data 也有
CsvFile
类型,它只进行解析,然后将数据作为行序列返回(它们本身就是字符串值的数组)。如果您只需要一些东西来处理分割线,但想要完成其余的工作,这可能会很好。如果您想自己编写 CSV 解析,您可以使用
File.ReadAllLines
读取单独的行,然后row.Split(',')
将每一行转换为字符串数组,,
用作分隔符。这可能适用于您的文件 - 但如果您的文件中有任何转义(例如Foo, "a, b", Bar
只有三列!
推荐阅读
- mysql - MariaDB:某些查询中没有选择数据库错误
- python-3.x - Pylint 错误:'optparse.OptionValueError:选项拼写字典:无效值:'en_US',应该在 ['']'
- reactjs - 如何通过 json 文件将图像从公共文件夹导入 React
- .htaccess - htaccess int:tolower 多次重定向
- heroku - 默认情况下是否可以使用免费的测功机来审查应用程序?
- django - 如何使用 django 查询集获得唯一的结果?
- c++ - 对“pair<...>”类型的非常量左值引用不能绑定到“pair<...>”类型的临时值
- powershell - 执行 chef inspec 命令时收到的错误
- python - 如何在python中计算多变量非线性回归?
- angular - Angular 6 烤面包机通知模块