でウェブから抽出された文字列のstringrからstr_extractの予期しない動作:R: <p></p>が、私は人の身長を抽出するための簡単な正規表現パターンを持っている:私はこれは非常に奇妙な例である知っているが、それ<em>が</em>再現性があるrvest
それが動作する単純な文字列でテストpattern <- "1\\.[0-9]{2} m"
:
library(stringr)
str_extract("1.75 m", pattern)
[1] "1.75 m"
しかし、それは私がウィキペディアからこすり文字列では動作しません。 、rvest
からhtml_text
を使用して、リンダ・エヴァンジェリスタの高さを抽出するために言う:あなたが密接に見れば
library(rvest)
url <- "https://en.wikipedia.org/wiki/Linda_Evangelista"
text <- read_html(url) %>%
html_nodes(".infobox") %>%
html_text()
text
[1] "Linda Evangelista\n\nEvangelista in August 2004\n\nBorn\n(1965-05-10) May 10, 1965 (age 52)St. Catharines, Ontario, Canada\nOccupation\nModel\nYears active\n1984–1998 (retired)\n2001–present\nSpouse(s)\nGérald Marie\n(m. 1987; div. 1993)\nChildren\n1\nModeling information\nHeight\n5 ft 9 in (1.75 m)[1]\nHair color\nBrown\nEye color\nBlue-green\nManager\nDNA Model Management (New York)Models 1 (London)\nView Management (Barcelona)\nPriscilla's Model Management (Sydney)\n\n"
str_extract(text, pattern)
[1] NA
ものの、"1.75 m"
文字列があります。
私は手動で予想通りstr_extract
作品、新しい変数に上記の文字列をコピー&ペースト場合、確かに:
class(text)
[1] "character"
typeof(text)
[1] "character"
class(text_manual)
[1] "character"
typeof(text_manual)
[1] "character"
:両方text
変数は、単純な文字列である text_manual <- "Linda Evangelista\n\nEvangelista in August 2004\n\nBorn\n(1965-05-10) May 10, 1965 (age 52)St. Catharines, Ontario, Canada\nOccupation\nModel\nYears active\n1984–1998 (retired)\n2001–present\nSpouse(s)\nGérald Marie\n(m. 1987; div. 1993)\nChildren\n1\nModeling information\nHeight\n5 ft 9 in (1.75 m)[1]\nHair color\nBrown\nEye color\nBlue-green\nManager\nDNA Model Management (New York)Models 1 (London)\nView Management (Barcelona)\nPriscilla's Model Management (Sydney)\n\n"
str_extract(text_manual, pattern)
[1] "1.75 m"
注意
しかし、それらは同じですか?いいえ:
text == text_manual
[1] FALSE
彼らは第83回の文字に異なるように見える:
str_sub(text, 1, 83)
[1] "Linda Evangelista\n\nEvangelista in August 2004\n\nBorn\n(1965-05-10) May 10, 1965 (age "
str_sub(text_manual, 1, 83)
[1] "Linda Evangelista\n\nEvangelista in August 2004\n\nBorn\n(1965-05-10) May 10, 1965 (age "
: str_sub(text, 1, 82) == str_sub(text_manual, 1, 82)
[1] TRUE
str_sub(text, 1, 83) == str_sub(text_manual, 1, 83)
[1] FALSE
しかし、私は、彼らが同じように表示されます理由はわかりません、その最後の文字は、両方のスペースではありません
Githubのstringr
パッケージの問題を開こうと思ったが、それがstringr
かrvest
のどちらであるかわからない。
誰でも何が問題なのでしょうか?それらが異なって符号化されているので
あなたはそれを釘付けました。 –