提取文件名段

时间:2017-04-30 10:42:22

标签: r stringr

我正在尝试提取文件名并使用相同名称保存数据框。 我遇到的问题是,如果由于某种原因文件名在具有相似单词的文件夹内,则stringr也将返回该单词。

filename <- "~folder/testdata/2016/testdata 2016.csv"

如果我这样做:

library(stringr) str <- str_trim(stringr::str_extract(filename,"[t](.*)"), "left")当我想要的只是testdata/2016/testdata 2016.csv时,它会返回testdata 2016。最好是获得testdata2016更好。

我一直在尝试几种组合,但必须有一种更简单的方法。如果有一种方法从右到左阅读路径,从.csv /处开始,我就不会有这个问题了。

2 个答案:

答案 0 :(得分:2)

您可以采用以下方法:

library(stringr)
str_replace(str_extract(filename,"\\w*\\s+\\w*(?=\\.)"),"\\s+","")

str_replace_all(basename(filename),"\\s+|\\.csv","")

您可以按照本杰明的建议使用basename方法。

?basename:
  

basename删除所有路径,包括最后一个路径   分隔符(如果有的话)。

<强>输出:

[1] "testdata2016"

答案 1 :(得分:2)

基础R中有很多帮助(tools pkg附带默认的R安装):

gsub(" ", "",
  tools::file_path_sans_ext(
    basename("~folder/testdata/2016/testdata 2016.csv")))