Mam poniższy ciąg -

" ?d a dm:Document .     ?d prism:doi ?doi . "

Z tego, chcę wyraźny listę słów zaczynających się od "?" , włączając '?' Jak mogę go użyć za pomocą funkcji SCALA?

Więc czego chcę to:

?d ?doi

Chociaż istnieją 2 wystąpienia "? D", chcę tylko jednego (odrębnego)

0
Mohammed Alam 21 lipiec 2020, 05:16

1 odpowiedź

Najlepsza odpowiedź

Sprawdź poniższy kod.

scala> df.show(false)
+--------------------------------------------+
|value                                       |
+--------------------------------------------+
| ?d a dm:Document .     ?d prism:doi ?doi . |
+--------------------------------------------+

scala> val extract = udf((data:String) => "\\?\\w+".r.findAllIn(data).toSet.mkString(" "))

scala> df.withColumn("parsed",extract($"value")).show(false)
+--------------------------------------------+-------+
|value                                       |parsed |
+--------------------------------------------+-------+
| ?d a dm:Document .     ?d prism:doi ?doi . |?d ?doi|
+--------------------------------------------+-------+

Scala

scala> val data = " ?d a dm:Document .     ?d prism:doi ?doi . "
data: String = " ?d a dm:Document .     ?d prism:doi ?doi . "

scala> "\\?\\w+".r.findAllIn(data).toSet.mkString(" ")
res60: String = ?d ?doi
0
Srinivas 21 lipiec 2020, 03:00