@ComingFlex

Как разбить строку на спискок?

Есть путь "E:\python\pycharm\fl\exel\ids.xlsx"
Мне нужно из этого сделать ['E:', 'python', 'pycharm', 'fl', 'exel', 'ids.xlsx']
Но в итоге получаю ['E:', 'python', 'pycharm\x0cl', 'exel', 'ids.xlsx']
Проблема возникает именно там, где \f

file_path = "E:\python\pycharm\fl\exel\ids.xlsx"
path = file_path.split('\\')
  • Вопрос задан
  • 77 просмотров
Решения вопроса 2
@bacon
'E:\python\pycharm\fl\exel\ids.xlsx'.split('\\') vs r'E:\python\pycharm\fl\exel\ids.xlsx'.split('\\')
ты же сам экранировал \ в split, так что либо так же экранируй строку, либо объявляй ее raw - r'
Ответ написан
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Не стоит изобретать велоссипедов.
В современном питоне есть замечательный модуль pathlib, который отлично работает с путями, файлами и директориями. Там есть всё, что нужно дл яправильной работы.

Если нужно работать с неродными для вашей оерационной системы путями (например виндовыми из под линукса), то там есть специальный класс для этого:
> p = pathlib.PureWindowsPath("E:\python\pycharm\fl\exel\ids.xlsx") 
> p.parts
('E:\\', 'python', 'pycharm\x0cl', 'exel', 'ids.xlsx')

Если вы работаете с путями нативно, то ещё прозе, модуль сам будет спользовать нужные классы:
> p = pathlib.Path("E:\python\pycharm\fl\exel\ids.xlsx") 
> p.parts
('E:\\', 'python', 'pycharm\x0cl', 'exel', 'ids.xlsx')

Но под линукс такой код не поймёт чего вы от него хотите при передаче винлового пути. Для линукса это просто одно имя в текущем каталоге (слеши не те, двоеточие допустимо для употребления в имени).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы