2

入力ファイルmyInput.txtが次のようになっているとします。

~~~ text1
bla bla
some more text
~~~ text2
lorem ipsum
~~~ othertext
the wikipedia
entry is not
up to date

つまり、 で区切られたドキュメントがあります~~~。目的の出力は次のとおりです。

text1: bla bla some more text
text2: lorem ipsum 
othertext: the wikipedia entry is not up to date

どうすればいいですか?以下はかなり不自然に思えます。さらに、タイトルを失います。

 val converter: Task[Unit] =
    io.linesR("myInput.txt")
      .split(line => line.startsWith("~~~"))
      .intersperse(Vector("\nNew document: "))
      .map(vec => vec.mkString(" "))
      .pipe(text.utf8Encode)
      .to(io.fileChunkW("flawedOutput.txt"))
      .run

  converter.run
4

1 に答える 1

0

以下は問題なく動作しますが、おもちゃの例以上で実行すると非常に遅くなります (70MB を処理するのに約 5 分)。それは私があちこちで を作成しているからProcessですか?また、シングルコアのみを使用しているようです。

  val converter2: Task[Unit] = {
    val docSep = "~~~"
    io.linesR("myInput.txt")
      .flatMap(line => { val words = line.split(" ");
          if (words.length==0 || words(0)!=docSep) Process(line)
          else Process(docSep, words.tail.mkString(" ")) })
      .split(_ == docSep)
      .filter(_ != Vector())
      .map(lines => lines.head + ": " + lines.tail.mkString(" "))
      .intersperse("\n")
      .pipe(text.utf8Encode)
      .to(io.fileChunkW("correctButSlowOutput.txt"))
      .run
  }
于 2015-05-06T13:12:09.453 に答える