Если вы хотите имя файла, регулярные выражения не ваш ответ.
В Python есть модуль pathlib , предназначенный для обработки путей к файлам, и его объекты, помимо методов, позволяющих получить изолированное имя файла для подбора всех возможных угловых случаев, также есть методы для открытия, вывода списка файлов и выполнения всех действий. каждый обычно делает с файлом.
Чтобы получить базовое имя файла из пути, просто используйте его автоматические свойства:
In [1]: import pathlib
In [2]: name = pathlib.Path("/home/user/JHN097567898_01102019_050514_svc_dc.tar")
In [3]: name.name
Out[3]: 'JHN097567898_01102019_050514_svc_dc.tar'
In [4]: name.parent
Out[4]: PosixPath('/home/user')
В противном случае, даже если вы не будете использовать pathlib
, где os.path.sep будет одним символом, не будет никакого преимущества в использовании re.split
вообще - нормальный string.split сделает. На самом деле, существует также os.path.split
, который, предшествующий pathlib, всегда делал бы то же самое:
In [6]: name = "/home/user/JHN097567898_01102019_050514_svc_dc.tar"
In [7]: import os
In [8]: os.path.split(name)[-1]
Out[8]: 'JHN097567898_01102019_050514_svc_dc.tar'
И, наконец (и в данном случае, по крайней мере, на самом деле), причина ошибки заключается в том, что вы находитесь в Windows, и ваш символ os.path.sep
равен "\"
- один этот символ не является полным регулярным выражением, так как Движок regex ожидает символ, указывающий на специальную последовательность после «\». Чтобы он использовался без нашей ошибки, вам нужно сделать:
re.split(re.escape(os.path.sep), "myfilepath")