scala:如何关联文件中的数据?

时间:2015-01-23 16:55:11

标签: scala loops

我从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)

任何提示?

1 个答案:

答案 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)元组,但没有将它返回到任何地方(例如,收益率)