如何从字符串中删除多余的字符?

时间:2016-04-30 18:20:01

标签: r

我有一列字符串,如下所示:

column of the strings

我希望删除.html之后的所有内容。

例如 - 我想替换

"/abeers-khadi-brown-heena.html?root=search&searchterm=heena&type=product&ptype=product"

"/abeers-khadi-brown-heena.html"

如何为整个列执行此操作?

3 个答案:

答案 0 :(得分:2)

但是你去了:一个正则表达式。

    testvars <- c("adkjfa;iejaoejf;ai.html/ajdakflj", "abc.html","abcd.html?root=")

    res <- gsub("(.+\\.html).+","\\1",testvars)
    > res
[1] "adkjfa;iejaoejf;ai.html" "abc.html"               
[3] "abcd.html"  

答案 1 :(得分:1)

还有一个可用于此类目的的包urltools。借用@Heroka创建的例子,

library(urltools)
url_parse(testvars)
  scheme                  domain port     path parameter fragment
#1   <NA> adkjfa;iejaoejf;ai.html <NA> ajdakflj      <NA>     <NA>
#2   <NA>                abc.html <NA>     <NA>      <NA>     <NA>
#3   <NA>               abcd.html <NA>     <NA>     root=     <NA>

答案 2 :(得分:0)

这显示了如何使用sub()替换其中一个字符串。

sub(".html.*", '.html', '/abeers-khadi-abeers-aloe-face-wash.html?root=sear')

这是将它应用于数据框的方法。这是对您数据的模拟。

rawdata <- c(
  '/a-derma/foaming-gel.html',
  '/abeers-khadi-abeers-aloe-face-wash.html?root=sear',
  '/abeers-khadi-abeers-saffron-and-neem-face-wash.html?foo=bar'
)
df <- data.frame(previousPagePath=rawdata)

然后我使用了apply(),然后将其分配回列。

df['previousPagePath'] <- apply(df['previousPagePath'], 1, function(x) sub(".html.*", '.html', x) )

证明:

df

#                                       previousPagePath
# 1                            /a-derma/foaming-gel.html
# 2             /abeers-khadi-abeers-aloe-face-wash.html
# 3 /abeers-khadi-abeers-saffron-and-neem-face-wash.html

快乐的编码!