首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从R中含有特殊字符和词的字符串中提取标题

如何从R中含有特殊字符和词的字符串中提取标题
EN

Stack Overflow用户
提问于 2017-11-13 02:27:24
回答 3查看 73关注 0票数 2

我有一个很长的字符串,包含了单词和字符的混合。

代码语言:javascript
复制
<h4>        <a href="/forum?id=SyBPtQfAZ">          Improving Discriminator-Generator Balance in Generative Adversarial Networks        </a>          <a href="/pdf?id=SyBPtQfAZ" class="pdf-link" title="Download PDF" target="_blank"><img src="/static/images/pdf_icon_blue.svg"/></a>              </h4>

我只需要摘取标题:

代码语言:javascript
复制
Improving Discriminator-Generator Balance in Generative Adversarial Networks

我知道R有能力在两个字符之间提取单词,例如:

代码语言:javascript
复制
sub(">.*<", "", my_string)

但这显然是行不通的,因为有许多字符的混合。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-13 02:42:02

您可能应该在这里使用HTML解析器。话虽如此,使用gsub的下列一条班轮可能会工作:

代码语言:javascript
复制
gsub(".*?<a href=[^>]*>\\s*(.*?)\\s*</a>.*", "\\1", input)

我说可能是因为我做了许多假设,包括标题锚标记是第一个,并且没有嵌套的内容。在实践中,您可以尝试使用HTML/XML解析器进行更大的控制。

Demo

票数 3
EN

Stack Overflow用户

发布于 2017-11-13 02:52:03

假设u是您获得此HTML的URL,则HTML解析解决方案可能如下所示:

代码语言:javascript
复制
library(rvest)
titles <- read_html(u) %>%
  html_nodes("a[href^='/forum']") %>% 
  html_text() %>%
  trimws()

这假设标题的href/forum开头,并使用trimws删除前导和尾随空格。

票数 3
EN

Stack Overflow用户

发布于 2017-11-13 02:54:41

You should not rely on regex for parsing HTML/XML --它非常脆弱,容易断裂。考虑使用rvest。您可以从任何源获取HTML和read_html()来解析它。html_text()只提取文本元素,trimws减少了经常存在于HTML中的多余空白。

代码语言:javascript
复制
library(rvest)
string = '<h4>        <a href="/forum?id=SyBPtQfAZ">          Improving Discriminator-Generator Balance in Generative Adversarial Networks        </a>          <a href="/pdf?id=SyBPtQfAZ" class="pdf-link" title="Download PDF" target="_blank"><img src="/static/images/pdf_icon_blue.svg"/></a>              </h4>'
read_html(string) %>% 
  html_text() %>% 
  trimws()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47256275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档