2017-02-14 51 views
1

我有输入文件,我想读取一个scala流,然后修改每个记录,然后输出文件。在scala中修改字符串列表

我输入如下 -

Name,id,phone-number 
abc,1,234567 
dcf,2,345334 

我想改变上述输入如下 -

Name,id,phone-number 
    testabc,test1,test234567 
    testdcf,test2,test345334 

我想读一个文件作为阶流如下:

val inputList = Source.fromFile("/test.csv")("ISO-8859-1").getLines 

上述步骤后我得到Iterator [字符串]

val newList = inputList.map{line => 
       line.split(',').map{s => 
       "test" + s 
       }.mkString (",") 
      }.toList 

但新列表为空。 我不知道我是否可以定义一个空列表和空数组,然后将修改的记录追加到列表中。 有什么建议吗?

+0

你实际管理,以读取文件? –

+0

我能够读取文件。但我坚持修改数据。下面的代码 - val newList = inputList.map {line => line.split(',')。map {s => println(“test”+ s) } } – user1122

+0

在第一张地图中缺少返回? – Dimitri

回答

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

1

下面是一个类似的方法,返回List[Array[String]]。如果您想要返回String,则可以使用mkStringtoString或类似的。

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