2016-11-30 2 views
0

У меня есть HTML строка (TEMP) следующим образомИспользование GSUB в R

"        <span id=\"MainContent_lblGenAssessment\">$138,110</span></dd>" 

Я хотел бы использовать GSUB только вернуть $ 138110, без кавычек или пробелов.

До сих пор я сделал

gsub("<.*?>", "", z[temp[3]]) 

, но это только возвращает

"        $138,110" 
+0

использовать 'trimws()', чтобы удалить пробелы в начале или в конце строки 'trimws (GSUB ("<.*?>", "", г [темп [3]]))' –

+0

Вы должны дать по запросу для доставки без кавычек, поскольку в результате нет никаких котировочных символов. Эти цитаты являются onlu информативными, и их можно избежать, используя 'cat' или print with' quotes = FALSE'. Посмотрите на функции 'trim', чтобы опубликовать процесс или лучше использовать шаблон типа« ^. + <.*?> |. + $ », Который удалит как стартовый, так и конечный мусор. –

+3

Если вы ожидаете, что HTML еще немного сложнее, чем это, вы должны рассмотреть использование синтаксического анализа XML. –

ответ

0

Одним из решений является использование групп захвата (битовой в скобках):

\\s соответствует пробельному, и [^<]+ соответствует одному или нескольким символам, которые не являются <.

temp <- "        <span id=\"MainContent_lblGenAssessment\">$138,110</span></dd>" 
out <- sub('\\s*<.*>([^<]+)<.*>\\s*', '\\1', temp) 
1

Если вы считаете, с помощью HTML/XML-анализатор, а Biegeleisen mentiones @ Тим:

Использование rvest (который основан на xml2) вы можете сделать следующее:

require(rvest) 
doc <- read_html("        <span id=\"MainContent_lblGenAssessment\">$138,110</span></dd>") 
html_text(html_node(doc, "span")) 

Какие дает "$138,110"

Написано в трубке (%>%) Форма это будет

doc %>% 
    html_node("span") %>% 
    html_text 
Смежные вопросы