我有点像R新手,因此有疑问.
我有一个文件
ABCD.csv
Run Code Online (Sandbox Code Playgroud)
.csv之前的长度不固定,并且可以变化为任何长度.如何在.csv之前提取部分.
Tyl*_*ker 98
file_path_sans_ext
标准安装工具包内置了一个内置文件,可以在没有扩展名的情况下获取文件.
tools::file_path_sans_ext("ABCD.csv")
## [1] "ABCD"
Run Code Online (Sandbox Code Playgroud)
Jas*_*n V 26
basename
还将删除通向该文件的路径.使用此正则表达式,任何扩展名都将被删除.
filepath <- "d:/Some Dir/ABCD.csv"
sub(pattern = "(.*)\\..*$", replacement = "\\1", basename(filepath))
# [1] "ABCD"
Run Code Online (Sandbox Code Playgroud)
或者,使用file_path_sans_ext
Tyler Rinker建议:
file_path_sans_ext(basename(filepath))
# [1] "ABCD"
Run Code Online (Sandbox Code Playgroud)
akr*_*run 13
你可以使用sub
或substr
sub('\\.csv$', '', str1)
#[1] "ABCD"
Run Code Online (Sandbox Code Playgroud)
要么
substr(str1, 1, nchar(str1)-4)
#[1] "ABCD"
Run Code Online (Sandbox Code Playgroud)
使用来自@JasonV帖子的'file_path'
sub('\\..*$', '', basename(filepath))
#[1] "ABCD"
Run Code Online (Sandbox Code Playgroud)
要么
library(stringr)
str_extract(filepath, perl('(?<=[/])([^/]+)(?=\\.[^.]+)'))
#[1] "ABCD"
Run Code Online (Sandbox Code Playgroud)
str1 <- 'ABCD.csv'
Run Code Online (Sandbox Code Playgroud)
wib*_*ley 11
fs::path_ext_remove()
“删除最后一个扩展名并返回路径的其余部分”。
fs::path_ext_remove(c("ABCD.csv", "foo.bar.baz.txt", "d:/Some Dir/ABCD.csv"))
# Produces: [1] "ABCD" "foo.bar.baz" "D:/Some Dir/ABCD"
Run Code Online (Sandbox Code Playgroud)
你也可以试试这个:
data <- "ABCD.csv"
gsub(pattern = "\\.csv$", "", data)
#[1] "ABCD"
Run Code Online (Sandbox Code Playgroud)
这在文件列表的情况下也很有帮助,比如
data <- list.files(pattern="\\.csv$")
,使用该代码将删除列表中所有文件的扩展名。
如果您有多个(可能的扩展名)的文件名,并且只想去掉最后一个扩展名,您可以尝试以下操作。
考虑文件名foo.bar.baz.txt
这个
sub('\\..[^\\.]*$', '', "foo.bar.baz.txt")
Run Code Online (Sandbox Code Playgroud)
会给你留下foo.bar.baz
。