我的问题与Split字符串相同,包括正则表达式匹配,但对于Scala.不幸的是,JavaScript解决方案在Scala中不起作用.
我正在解析一些文字.假设我有一些字符串:
"hello wold <1> this is some random text <3> foo <12>"
Run Code Online (Sandbox Code Playgroud)
我想得到以下Seq : "hello world" :: "<1>" :: "this is some random text" :: "<3>" :: "foo" :: "<12>".
请注意,每当遇到<"number">序列时,我都会分割字符串.
我有[~]一些我正在阅读的 csv 文件的分隔符。
1[~]a[~]b[~]dd[~][~]ww[~][~]4[~]4[~][~][~][~][~]
Run Code Online (Sandbox Code Playgroud)
我试过这个
val rddFile = sc.textFile("file.csv")
val rddTransformed = rddFile.map(eachLine=>eachLine.split("[~]"))
val df = rddTransformed.toDF()
display(df)
Run Code Online (Sandbox Code Playgroud)
然而,这个问题在于它是作为单个值数组出现的,每个字段中都有[和]。所以数组将是
["1[","]a[","]b[",...]
Run Code Online (Sandbox Code Playgroud)
我不能用
val df = spark.read.option("sep", "[~]").csv("file.csv")
Run Code Online (Sandbox Code Playgroud)
因为不支持多字符分隔符。我可以采取什么其他方法?
1[~]a[~]b[~]dd[~][~]ww[~][~]4[~]4[~][~][~][~][~]
2[~]a[~]b[~]dd[~][~]ww[~][~]4[~]4[~][~][~][~][~]
3[~]a[~]b[~]dd[~][~]ww[~][~]4[~]4[~][~][~][~][~]
Run Code Online (Sandbox Code Playgroud)
编辑 - 这不是重复的,重复的线程是关于多分隔符的,这是多字符单分隔符