scala - 跳过作为标题的第一行
问题描述
我正在使用 akka-stream 来解析文件。在我的文件中,我首先有标题行,没有其他地方。如何先在我的流中跳过这个头文件?我不想每次都检查行是否是标题。有没有办法做到这一点?
FileIO.fromPath(path).
via(delimiter(ByteString("\n"), Int.MaxValue)). // split into lines
map(_.decodeString("UTF-8")). // convert ByteStrings to Strings
filter(!_.startsWith("#")). // remove comments
fold(0)((i, _) => i + 1). // count remaining lines
runForeach(println) // run the stream, print result
解决方案
如果您正在阅读 CSV 文件,您可以使用Alpakka:逗号分隔值 - CSV
例子 :
Source
.single(ByteString(
"""eins,zwei,drei
|11,12,13
|21,22,23
|""".stripMargin))
.via(CsvParsing.lineScanner())
.via(CsvToMap.toMap())
.fold(0)((i, _) => i + 1)
.runForeach(println)
输出:2
推荐阅读
- node.js - 如何在服务器上保存 JWKBaseKeyObject 并检索
- azure-powershell - 如何使用 PowerShell 为特定资源和特定策略获取 Azure Policy 合规性报告?
- reactjs - 无法引用 id,因为代码尚未返回
- python - 一旦在文件 aka hold.txt PYTHON3 中找到日期,代码就不会继续下一个输入
- react-native - 垂直平面列表上水平平面列表项的焦点旁白
- google-chrome-extension - 用于转发电子邮件的 Chrome 扩展程序
- typescript - Typescript AMD 模块 - 脚本未运行
- python - 如何从另一个 docker 容器中使用 python?
- operating-system - 为什么进程在 qemu 中遇到断点后无法继续?
- solana - 如何将程序部署到 Solana - Solana/Rust