1

ノードに雑誌のテキストを含むHTMLファイルの大規模なセットがありますspan 私のPDFからHTMLへのコンバーターは、HTML全体に文字エンティティを挿入しました。問題は、Rでは、関数(XMLパッケージ内)を使用してテキストを抽出しますが、単語間にスペースxmlValueがある場合はどこでも削除されることです。 例えば:

<span class="ft6">kids,&nbsp;and kids in your community,&nbsp;in                                   DIY&nbsp;projects.&nbsp;</span>

次のように関数から出てきxmlValueます:

"kids,and kids in your community,in DIYprojects."

これを解決する最も簡単な方法は、ノードを&nbsp;実行する前にすべてを見つけて、それらを(スペース)に置き換えることだと思っていました。どのようにアプローチしますか?spanxmlValue" "

4

1 に答える 1

1

元の投稿者がからテキストを取得できないという問題を反映するために、回答を書き直しましたXMLValue。これに取り組むにはおそらくさまざまな方法がありますが、1つの方法は、HTMLファイル自体を直接開く/置換する/書き込むことです。一般に、正規表現を使用してXML / HTMLに取り組むことは悪い考えですが、この場合、不要な改行なしスペースという単純な問題があるため、それほど問題にはならない可能性があります。次のコードは、一致するファイルのリストを作成gsubし、コンテンツに対してを実行する方法の例です。必要に応じて簡単に変更または拡張できる必要があります。

setwd("c:/test/")
# Create 'html' file to use with test
txt <- "<span class=ft6>kids,&nbsp;and kids in your community,&nbsp;in                                   DIY&nbsp;projects.&nbsp;</span>
<span class=ft6>kids,&nbsp;and kids in your community,&nbsp;in                                   DIY&nbsp;projects.&nbsp;</span>
<span class=ft6>kids,&nbsp;and kids in your community,&nbsp;in                                   DIY&nbsp;projects.&nbsp;</span>"
writeLines(txt, "file1.html")

# Now read files - in this case only one
html.files <- list.files(pattern = ".html")
html.files

# Loop through the list of files
retval <- lapply(html.files, function(x) {
          in.lines <- readLines(x, n = -1)
          # Replace non-breaking space with space
          out.lines <- gsub("&nbsp;"," ", in.lines)
          # Write out the corrected lines to a new file
          writeLines(out.lines, paste("new_", x, sep = ""))
})
于 2013-01-15T00:23:10.843 に答える