读取CSV文件并在Scala中的不同potiton上添加newline字符



这是我的数据集:

UNIT_TYPE,ALARM_TYPE,ALARM_INFO,LOCATION,RAISED_TIME,ALARM_GROUP,PROBABLE_CAUSE,"ECP,OPTIC_TRANSCEIVER_RX_LOS,RACK[0]/SHELF[0]/SLOT[1]-ECP[0]/CPRI_PORT[10],2017-08-31,14:30:48,EQUIPMENT_ALARM,LINE_INTERFACE_FAILURE,major,3116378,When,optic,cable,open,or,optical,signal,strength,decreases.,4",

重新测试模式:

UNIT_TYPE,ALARM_TYPE,ALARM_INFO,LOCATION,RAISED_TIME,ALARM_GROUP,PROBABLE_CAUSE,(n)
    "ECP,OPTIC_TRANSCEIVER_RX_LOS,RACK[0]/SHELF[0]/SLOT[1]-ECP[0]/CPRI_PORT[10],2017-08-31,14:30:48,EQUIPMENT_ALARM,LINE_INTERFACE_FAILURE,major,3116378,When,optic,cable,open,or,optical,signal,strength,decreases.,4",(n)

此数据集是一个逗号分隔的数据集,但是问题是所有数据集都在一个字符串中,结果应在不同的行中,在我的情况下,所有这些都在一行中,而不是不同的行,以便我可以将其与Excel表相关联。

我需要在probabe_cuase之后添加一个新的行字符( n),然后在4英寸后再次添加newline字符。我实际上是在创建一个CSV文件,但无法添加/n 分开我的行有人可以帮助

为了解决这个问题,我将标识符替换为&然后给出了一个新的线角色。#

我的代码:

package learningscala
import scala.io.Source
import scala.xml.XML
import scala.util.matching.Regex
import java.io.{File, FileOutputStream}
object hello {
  def main(args: Array[String] ) {
    val fos = new FileOutputStream(new File("/home/aditya/Downloads/file.txt"))
Console.withOut(fos) {
   println("UNIT_TYPE,ALARM_TYPE,ALARM_INFO,LOCATION,RAISED_TIME,ALARM_GROUP,PROBABLE_CAUSE tn")
  // bufferedSource = io.Source.fromFile("/home/aditya/Downloads/sample.csv")
    //for (line <- bufferedSource.getLines) {
       //prints the specific line 
      //println(line)
        // do whatever you want with the columns here
      val lines = Source.fromFile("/home/aditya/Downloads/sample.csv")
      //println(lines)
      val regex = new Regex("EQUIPMENT_ALARM")
       for (line <- lines.getLines())
       { 
                                           regex.findFirstIn(line) match {
                                        case Some(text) => println( line + "")
                                          //case Some(text) => println() 
                                          case None => println()
                                             }
       }
  val file = Source.fromFile("/home/aditya/Downloads/file.txt").getLines().filter(!_.isEmpty()).mkString(" &# ")
     printf(file)
    //var str = "Hello123"
val res = file.split("#")

 val fos = new FileOutputStream(new File("/home/aditya/Downloads/file1.txt"))

Console.withOut(fos) {
val res1 = println(res.deep.mkString("n"))
  val lines1 = Source.fromFile("//home/aditya/Downloads/file1.txt").mkString
printf(lines1)
val res2 = lines1.split("\s+")

val fos =   new FileOutputStream(new File("/home/aditya/Downloads/file2.csv"))
 Console.withOut(fos) { 
val res3 = println(res2.deep.mkString(","))
//val nameValuePairs = result.split("&")
 val lines2 = Source.fromFile("/home/aditya/Downloads/file2.csv").mkString
 //printf(lines2)
val res4 = lines2.split(",&,")

val fos =   new FileOutputStream(new File("/home/aditya/Downloads/file3.csv"))
Console.withOut(fos) {

val res5 = println(res4.deep.mkString("n"))
val lines3 = Source.fromFile("/home/aditya/Downloads/file3.csv").mkString
val res6 = lines3.replace(""", "")
val fos =   new FileOutputStream(new File("/home/aditya/Downloads/file3.csv"))
Console.withOut(fos) {

printf(res6)
}
}
  //val regex = new Regex("  ECP,  ")



//val res2 = lines1.split("n").map(_.split("\s+")(0)).mkString(", ")
//printf(res2)
//val res2 = lines1.split("\s+")
    // val res2 = file.split("\s+")
    // val res3 = println(res2.deep.mkString(","))
     //printf("$res3")
 //val test = "/home/aditya/Downloads/file.txt".split ("\s+").map (_.trim).mkString ("n")
     //val res2 = res.split("\W")
 //val res3 = println()
    // val res2 = file.split("\s+")
}
  }
    }
  }
}

所以,我所做的是,我创建了一个额外的标识符&amp;这帮助我成功地应用了分裂操作。

输出

unit_type,alarm_type,alarm_info,位置,raised_time,armard_group,abretable_cause

ecp,optic_transceiver_rx_los,机架[0]/架子[0]/slot [1] -ecp [0]/cpri_port [10],31-08-2017,14:30:30:30:48,设备3116378,何时,光学,电缆,打开或,光学,信号,强度,降低,4 ,,,,,ECP,optic_transceiver_tx_fault,rack [0]/架子[0]/slot [1] -ecp [0]/cpri_port [10],31-08-2017,14:30:30:48,设备_ALARM,lound_interface_failure,line_interface_failure,Major,3116379,3116379,3116379,功率,监测,结果,激光,二极管,异常,6 ,,,,ECP,optic_transceiver_rx_los,rack [0]/架子[0]/slot [2] -ecp [1]/cpri_port [10],31-08-2017,14:30:30:48,设备_ALARM,lound_interface_failure,line_interface_failure,Major,3116378,3116378,3116378,光学,电缆,打开或,光学,信号,强度,降低,8 ,,,,,ECP,optic_transceiver_tx_fault,rack [0]/架子[0]/slot [2] -ecp [1]/cpri_port [10],31-08-2017,14:30:30:48,设备_ALARM,lound_interface_failure,line_interface_failure,Major,3116379,3116379,3116379,功率,监测,结果,激光,二极管,异常,10 ,,,,,ecp,board_deletion,架子[0]/架子[0]/插槽[3] -ecp [2],31-08-2017,14:30:25,设备_ALARM,EBOCEME_MALFUNCTICT是,卸下。RRH,VSWR_FAIL,RRH [0_6_0] -RRH [0_6_0]/PATH [5],11-09-2017,01:26:26:23,Equibmen_Alarm,persenceiver_problem,Major,3149392,什么时候,在下方,阈值,级别,200,sys,communication_fail,架子[0]/架子[0]/插槽[6] -EAIU,31-08-2017,14:31:22,Equibmor_Alarm,Link_failure,crigict,3199381,3199381,何时,何时,keep-alive,alave-alive,message,消息,响应,不能,,,,在,在du之间,du和eaiu。,12

最新更新