我从scala开始,我试图为文件的每一行关联值。 让我们说我有这个简单的文本文件作为输入:
key1,data1#data2
key2,data3#data4#data5
我希望我的输出为:
key1,data1
key1,data2
key2,data3
key2,data4
key2,data5
我尝试了类似的东西,但它不起作用:
Source.fromFile("test").getLines.map { line =>
val data = line.split(",")
for(v <- data(1).split("#"))
{
(data(0),v)
}
}.foreach(println)
任何提示?
答案 0 :(得分:4)
你很亲密:
def parseLine(str: String) = {
val Array(key, values) = str.split(",")
for(value <- values.split("#")) yield key -> value
}
val lines = List(
"key1,data1#data2",
"key2,data3#data4#data5"
)
lines.flatMap(parseLine).foreach(println)
(key1,data1)
(key1,data2)
(key2,data3)
(key2,data4)
(key2,data5)
您的特定问题在
for(v <- data(1).split("#")) {
(data(0),v)
}
你已经构建了结果(data(0),v)
元组,但没有将它返回到任何地方(例如,收益率)