CSV记录中的字符串列表?
如何在不截断列表的情况下将记录中的字符串列表写入CSV CSV编写器:CSV记录中的字符串列表?,csv,f#,export-to-csv,Csv,F#,Export To Csv,如何在不截断列表的情况下将记录中的字符串列表写入CSV CSV编写器: let toSepFile sep header (fileName:string) (s:'record seq)= let schemaType=typeof<'record> let fields = Reflection.FSharpType.GetRecordFields(schemaType) let toStr fields = fields
let toSepFile sep header (fileName:string) (s:'record seq)=
let schemaType=typeof<'record>
let fields = Reflection.FSharpType.GetRecordFields(schemaType)
let toStr fields =
fields
|> Seq.fold(fun res field-> res+field+sep) ""
use w = new System.IO.StreamWriter(fileName)
if header then
let header_str= fields
|> Seq.map(fun field -> field.Name)
|> toStr
w.WriteLine(header_str)
let elemToStr (elem:'record) =
//for each field get value
fields
|> Seq.map(fun field -> string (FSharpValue.GetRecordField(elem,field)))
|> toStr
s
|>Seq.map(elemToStr)
|>Seq.iter(fun elem -> w.WriteLine(elem))
当前CSV输出:
Name Age Countries
"Joe 51 [CZ; UK; US; ... ] "
"Tomas 28 [CZ; UK; US; ... ] "
"Suzanne 15 [US] "
那么,是否可以从CSV输出中看到字符串的完整列表,而不是“…”
编辑:所需输出:
Name Age Countries
"Joe 51 [CZ; UK; US] "
"Tomas 28 [CZ; UK; US; CZ] "
"Suzanne 15 [US] "
您遇到的问题是,对于
List
s,ToString()
方法会截断输出。解决方法是不要使用ToString()
,而是使用sprint“%A”*这里的列表*
您希望您的输出是什么样子的?谢谢,将Seq.map(fun field->string(FSharpValue.GetRecordField(elem,field))中的“string”更改为sprintf“%A”就成功了。
Name Age Countries
"Joe 51 [CZ; UK; US] "
"Tomas 28 [CZ; UK; US; CZ] "
"Suzanne 15 [US] "