scala:如何关联文件中的数据?
scala: how to associate data from a file?
我从 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)
有什么提示吗?
你很接近:
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)
元组,但没有在任何地方返回它(例如使用 yield)
我从 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)
有什么提示吗?
你很接近:
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)
元组,但没有在任何地方返回它(例如使用 yield)