Учитывая путь, например,

file_path = 'a.b.c.d.e'

Я хочу удалить e.
Вот что я сделал:

class_path = ('.').join(file_path.split('.')[0:-1])

Есть более элегантный способ сделать это?

5
Mor Zamir 2 Июл 2019 в 14:11

3 ответа

Лучший ответ

Просто с помощью str.rfind функции:

file_path = 'a.b.c.d.e'
file_path = file_path[:file_path.rfind('.')+1]
print(file_path)   # a.b.c.d.

Если завершающий . не нужен - уберите +1 смещение: (file_path[:file_path.rfind('.')]).

3
RomanPerekhrest 2 Июл 2019 в 11:45
import os
os.path.splitext(file_path)[0]
4
ipaleka 2 Июл 2019 в 11:17

Например, вы можете использовать rpartition , если хотите использовать строковые методы :

class_path = file_path.rpartition('.')[0]
3
jofrev 2 Июл 2019 в 11:23