stringr в R: извлечь имя файла из filename.extension, когда filename и filename.extension имеют общие символы - PullRequest
0 голосов
/ 25 января 2020

У меня есть набор 'filename.extension', и я хочу извлечь только имя файла. У меня возникают проблемы при извлечении полного имени файла, когда имя файла разделяет символ с расширением файла. например, filename.extension "qrs.sas7bdat" имеет

    filename="qrs"
    extension="sas7bdat"

. В этом случае можно заметить, что имя файла имеет общее с расширением символ "s".

Вот некоторый код R, чтобы дать больше контекста:


files_sas <- c("abc.sas7bdat","qrs.sas7bdat")
stringr::str_extract(files_sas,"(?:.*|.*s)[^\\.sas7bdat]")

Этот набор кода возвращает следующий символьный вектор:

"abc" "qr" 

Это не то, что я хочу - - желаемый результат, который я хочу получить:

c("abc","qrs")

Похоже, я рядом, и поэтому я надеюсь, что кто-то сможет помочь мне получить желаемый результат.

Большое спасибо ,

1 Ответ

0 голосов
/ 25 января 2020

Мы можем использовать sub, чтобы соответствовать . (. - метасимвол, соответствующий любому символу, поэтому мы заменяем (\\) iit, после которого следует другой символ (.*), при замене , мы можем указать пробел ("")

sub("\\..*", "", files_sas)
#[1] "abc" "qrs"

Или с stringr

library(stringr)
str_remove(files_sas, "\\..*")

Или с file_path_sans_ext

tools::file_path_sans_ext(files_sas)
#[1] "abc" "qrs"
...