我有输入文件我想读取scala流然后修改每条记录然后输出文件。
我的输入如下 -
Name,id,phone-number
abc,1,234567
dcf,2,345334
我想更改以上输入 -
Name,id,phone-number
testabc,test1,test234567
testdcf,test2,test345334
我正在尝试将文件读取为scala流,如下所示:
val inputList = Source.fromFile("/test.csv")("ISO-8859-1").getLines
在上面的步骤之后我得到Iterator [String]
val newList = inputList.map{line =>
line.split(',').map{s =>
"test" + s
}.mkString (",")
}.toList
但新列表为空。 我不确定我是否可以定义一个空列表和空数组,然后将修改后的记录追加到列表中。 有什么建议吗?
答案 0 :(得分:1)
这是一种返回List[Array[String]]
的类似方法。如果您想要返回mkString
,可以使用toString
,String
或类似内容。
scala> scala.io.Source.fromFile("data.txt")
.getLines.drop(1)
.map(l => l.split(",").map(x => "test" + x)).toList
res3: List[Array[String]] = List(
Array(testabc, test1, test234567),
Array(testdcf, test2, test345334)
)
答案 1 :(得分:1)
您可能希望将迭代器转换为流
val l = Source.fromFile("test.csv")
.getLines()
.toStream
.tail
.map { row =>
row.split(',')
.map { col =>
s"test$col"
}.mkString (",")
}
l.foreach(println)
testAbc的,为test1,test234567
testdcf,TEST2,test345334