我正在尝试从书中提取文字。 book.txt中的示例行:
作者:然而,玛丽警告她的母亲,她从那时起就没有改变过 她去年夏天工作了 这是温暖的夏天和城市 充满游客......
以下是我的代码:
val bookRDD = sc.textFile(“file://test/book.txt”);
val sentenceRDD = bookRDD.filter(line => line.contains(“Author:”))
代码抓取包含Author:
“作者:然而,玛丽警告她的母亲,自去年夏天工作以来,她没有改变。”
这很好,但我需要抓取Author:
后面的文字并排除Author:
,所以我有:
然而,玛丽警告她的母亲,因为她已经没有改变 去年夏天工作了。
你能帮我写一下代码,在“作者:”之后抓取文字吗?我想在RDD中做这个。
答案 0 :(得分:3)
过滤后,您可以映射rdd以将字符串Author:
替换为空白。
e.g
val bookRDD = sc.textFile(“file://test/book.txt”);
val sentenceRDD = bookRDD.filter(line => line.contains(“Author:”)).map(line => line.replaceFirst("Author: ", ""))
答案 1 :(得分:2)
您可以在此处使用多种字符串操作技术。您可以使用substring
,replaceAll
,split
(可能)
这是一个replaceAll
rdd.filter( _.startsWith("Author:") )
.map(_.replaceAll("Author:" , "").trim )
.first
// String = However, Mary warns her mother that she hasn't changed since she has worked last summer.