• R语言
  • 如何从txt读取的字符串中提取特定字符

各位老师,我想请教下一个问题,
比如有如下的txt文档,里面的内容:

</div> <script type="text/javascript"> handle_async_data('tmp_CitationScoreCard', 'CitationScoreCard'); </script> <span id="tmp_category_3" style="display: none"> <table cellspacing="0" cellpadding="0" border="0" class="JCR_Category_table"> <tr> <th>JCR<span class="RegMark">®</span> 类别</th> <th>JCR 分区</th> </tr> <tr> <td> ECONOMICS </td> <td class="JCR_quartile">Q3</td> </tr> </table> <br/> <p class="overlayJCRtext" id="3_overlayJCRtext_PH"> 数据来自第 2013 版 Journal Citation Reports<span class="RegMark">®</span> </p> </span> <script type="text/javascript"> handle_async_data("tmp_category_3", "category_3"); </script> <script type="text/javascript"> $("#show_journal_overlay_link_3").show(); $("#source_title_3").hide(); </script> <script type="text/javascript"> if($( '#3_overlayJCRtext_PH' ).length != 0){ $('#3_overlayJCRtext_PH').html($('#3_tmp_overlayJCRtext').html()) } </script> <span id="tmp_category_2" style="display: none"> <table cellspacing="0" cellpadding="0" border="0" class="JCR_Category_table"> <tr> <th>JCR<span class="RegMark">®</span> 类别</th> <th>JCR 分区</th> </tr> <tr> <td> ECONOMICS </td> <td class="JCR_quartile">Q3</td> </tr> </table> <br/> <p class="overlayJCRtext" id="2_overlayJCRtext_PH"> 数据来自第 2013 版 Journal Citation Reports<span class="RegMark">®</span> </p> </span> <script type="text/javascript"> handle_async_data("tmp_category_2", "category_2"); </script> <script type="text/javascript"> $("#show_journal_overlay_link_2").show(); $("#source_title_2").hide(); </script> <script type="text/javascript"> if($( '#2_overlayJCRtext_PH' ).length != 0){ $('#2_overlayJCRtext_PH').html($('#2_tmp_overlayJCRtext').html()) } </script> <span id="tmp_category_1" style="display: none"> <table cellspacing="0" cellpadding="0" border="0" class="JCR_Category_table"> <tr> <th>JCR<span class="RegMark">®</span> 类别</th> <th>JCR 分区</th> </tr> <tr> <td> ECONOMICS </td> <td class="JCR_quartile">Q4</td> </tr> </table> <br/> <p class="overlayJCRtext" id="1_overlayJCRtext_PH"> 数据来自第 2013 版 Journal Citation Reports<span class="RegMark">®</span> </p> </span> <script type="text/javascript"> handle_async_data("tmp_category_1", "category_1"); </script> <script type="text/javascript"> $("#show_journal_overlay_link_1").show(); $("#source_title_1").hide(); </script> <script type="text/javascript"> if($( '#1_overlayJCRtext_PH' ).length != 0)

我现在想从中找出包括tmp_category_的,如tmp_category_3,tmp_category_2,tmp_category_1,然后保存到一个变量中。

我的想法是先读取到R中,
res <- readLines("lookfor.txt")
然后利用正则表达式,可是有一个问题,这样读取出来的res的长度为1,所以当做一个整体字符了。
应该怎么解决这个问题?
谢谢
gregexpr('tmp_category_[0-9]+', res)
[未知用户]
谢谢您。
这个代码返回的是字符所在的位置,怎么返回具体的字符?
我用下面的代码
gregexpr('tmp_category_[0-9]+', res)
res[gregexpr('tmp_category_[0-9]+', res)[[1]]]
返回的是NA。问题出在哪?
可以在网页中直接处理。
library(rvest)
url = "file:///C:/temp/tt.html"
dat = html(url) %>% html_nodes("span") %>% html_attr("id") %>% na.omit
iconv(dat,"UTF-8","gbk")
[1] "”tmp_category_3″" "”tmp_category_2″" "”tmp_category_1″"
[未知用户]
非常感谢,我的原意就是从网页读取的,无奈水平有限,一直实现不了,才想到转换思路。
我还想请教下,就上面的例子,怎么只读取出Q3,Q2等字符?

> html(url) %>% html_nodes("td:nth-child(2)") %>% html_text() %>%  iconv("UTF-8","gbk")
[1] "Q3" "Q3" "Q4"