gpt4 book ai didi

file - 如何很好地阅读 "alternating"行?

转载 作者:行者123 更新时间:2023-12-01 08:46:36 27 4
gpt4 key购买 nike

我有一个文本文件,其中包含遵循替代模式的行,例如:

name: SomeName 
counterA: 0, counterB: 0, counterC: 0
name: SomeNameB
counterA: 1, counterB: 2, counterC: 3
...

我想编写一个简单的解析器,将 SameName 和计数器 A 到 C 推送到一个新对象中。

所以任务基本上是总是一起处理两条行。

我从这段代码开始:

fun readFileAsLinesUsingReadLines(fileName: String): List<String> = File(fileName).readLines()

fun main(args: Array<String>) {
val lines = readFileAsLinesUsingReadLines("Whatever")
for (i in (0 .. lines.size-1 step 2)) {
println(lines[i]+lines[i+1])
}
}

是的,打印出来的

name: SomeName counterA: 0, counterB: 0, counterC: 0

然后我可以进一步解析。

但我发现 (0 ..lines-size-1 step) 的用法不是很优雅。

是否有更优雅或“更多 kotlin”的方式来提取这些信息?

最佳答案

useLines ,您可以将这些行读取为(惰性)序列,然后使用 chunked使用转换 lambda 来解析和格式化您认为合适的:

val result = File("file.txt").useLines { lines ->
lines.chunked(2) { (l1, l2) -> l1 + l2 }.toList()
}

result.forEach { println(it) }

如果出于某种原因,您想先将所有内容流式传输到内存中,您也可以使用 readLines使用基于列表的 chunked :

val result = File("file.txt").readLines().chunked(2) { (l1, l2) -> l1 + l2 }

result.forEach { println(it) }

关于file - 如何很好地阅读 "alternating"行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52035986/

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