【发布时间】:2018-08-19 10:27:25
【问题描述】:
我是一名 C# 开发人员,这是我第一次尝试编写 F#。
我正在尝试以 CSV 格式读取 Dashlane 导出的数据库。对于每种可能的条目类型,这些文件没有标题和动态列数。以下文件是我用来测试我的软件的虚拟数据示例。它只包含password 条目,但它们有 5 到 7 列(稍后我将决定如何处理其他类型的数据)
导出文件的第一行(在这种情况下,但并非总是如此)是用于创建 dashlane 帐户的电子邮件地址,这使得该行只有一列宽。
"accountCreation@email.fr"
"Nom0","siteweb0","Identifiant0","",""
"Nom1","siteweb1","identifiant1","email1@email.email","",""
"Nom2","siteweb2","email2@email.email","",""
"Nom3","siteweb3","Identifiant3","password3",""
"Nom4","siteweb4","Identifiant4","email4@email.email","password4",""
"Nom5","siteweb5","Identifiant5","email5@email.email","SecondIdentifiant5","password5",""
"Nom6","siteweb6","Identifiant6","email6@email.email","SecondIdentifiant6","password6","this is a single-line note"
"Nom7","siteweb7","Identifiant7","email7@email.email","SecondIdentifiant7","password7","this is a
multi
line note"
"Nom8","siteweb8","Identifiant8","email8@email.email","SecondIdentifiant8","password8","single line note"
我正在尝试将每一行的第一列打印到控制台作为开始
let rawCsv = CsvFile.Load("path\to\file.csv", ",", '"', false)
for row in rawCsv.Rows do
printfn "value %s" row.[0]
这段代码在for 行给我以下错误
无法根据架构解析第 2 行:预期 1 列,得到 5
我没有给CsvFile 任何架构,我在互联网上找不到如何指定架构。
如果我愿意,我可以动态删除第一行,但它不会改变任何内容,因为其他行的列数也不同。
有什么方法可以在 F# 中解析这个笨拙的 CSV 文件吗?
注意:对于每个password 行,只有最后一行之前的列对我很重要(密码列)
【问题讨论】: