【发布时间】:2020-08-10 21:12:40
【问题描述】:
我正在预处理一个包含 100,000 多个博客 URL 的数据框,其中许多都包含博客标题中的内容。 grep 函数让我删除了其中许多 URL,因为它们与档案、提要、图像、附件或各种其他原因有关。其中之一是它们包含“原子”。
例如,
string <- "http://www.example.com/2014/05/update-on-atomic-energy-legislation/feed/atom/archives/"
row <- "one"
df <- data.frame(row, string)
df$string <- as.character(df$string) df[-grep("atom", string), ]
我的问题是“原子”模式可能出现在博客标题中,这是重要的内容,我不想删除这些 URL。
如何将 grep 仅集中在最后 20 个字符(或某个数字,大大降低我将 grep 包含模式而不是结束元素的内容的风险?这个问题在末尾使用 $ 但不是使用 R;另外,我不知道如何将 $ 向后扩展 20 个字符。Regular Expressions _# at end of string
假设模式并不总是在一端或两端都有正斜杠。例如,/atom/。
substr 函数可以隔离字符串的结尾部分,但我不知道如何仅在该部分内进行 grep。下面的伪代码利用 %in% 函数试图说明我想做什么。
substr(df$string, nchar(df$string)-20, nchar(df$string)) # 提取最后 20 个字符;从 nchar end -20 开始,到结束
但是下一步是什么?
string[-grep(pattern = "atom" %in% (substr(string, nchar(string)-20, nchar(string))), x = string)]
感谢您的指导。
【问题讨论】:
-
你可以直接搜索“/atom/”吗?
-
正如我所写,马修,之前或之后并不总是有正斜杠。
-
不能先过滤掉所有存档吗?