gpt4 book ai didi

scala - Akka 流 : process CSV with header

转载 作者:行者123 更新时间:2023-12-04 16:07:33 25 4
gpt4 key购买 nike

Reading a CSV files using Akka Streams- 基于这个问题。我使用 Akka Streams 读取了 CSV。现在我需要逐行执行处理 - 但我还需要知道 header 的名称是什么。有什么选择吗?

更新。澄清一点。

FileIO.fromPath(Paths.get("a.csv))
.via(Framing.delimiter(ByteString("\n"), 256, true).map(_.utf8String))
.runForeach(println /* header + current line for each line*/)

最佳答案

您可以使用 prefixAndTail获取第一个元素 - 在本例中为标题 - 然后将其与后续元素(行)惰性组合。

这是一个将标题和列组合在一起形成 Map[String, String] 的示例:

val flow: Flow[Seq[String], Map[String, String], NotUsed] = Flow[Seq[String]]
.prefixAndTail(1).flatMapConcat { case (headers, rows) =>
rows.map (row => headers.head.zip(row).toMap)
}

val test: Source[Seq[String], NotUsed] = Source(
List(Seq("col1", "col2"), Seq("a", "b"), Seq("1", "2")))

Await.result(test.via(flow).runForeach(println), 20.seconds)
// Map(col1 -> a, col2 -> b)
// Map(col1 -> 1, col2 -> 2)

关于scala - Akka 流 : process CSV with header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42690493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com