Python Windows Путь регулярное выражение - PullRequest
0 голосов
/ 10 декабря 2018

Я провел последние два часа, выясняя это.У меня есть эта строка:

C:\\Users\\Bob\\.luxshop\\jeans\\diesel-qd\\images\\Livier_11.png 

Я заинтересован в получении \\Livier_11.png, но для меня это кажется невозможным.Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 10 декабря 2018

Если вы можете четко сказать, что «\\» является разделителем (не появляется ни в одной строке, кроме как для разделения строк), то вы можете сказать:

str = "C:\\Users\\Bob\\.luxshop\\jeans\\diesel-qd\\images\\Livier_11.png"
spl = str.split(“\\”) #split the string
your_wanted_string = spl[-1]

Обратите внимание, что это очень простоспособ сделать это и не всегда лучший способ!Если вам нужно делать это часто или если от этого зависит что-то важное, используйте библиотеку!Если вы только учитесь кодировать, это легче понять.

0 голосов
/ 10 декабря 2018

Вы можете использовать это

^.*(\\\\.*)$

Объяснение

  • ^ - привязка к началу строки.
  • .* - Совпадает с чем угодно, кроме нуля или времени новой строки (метод Жадности).
  • (\\\\.*) - Группа захвата.Совпадения \\ следуют за любой вещью, кроме нуля или новой строки.
  • $ - Привязка к концу строки.

Демо

PS - Для этого вы должны использовать стандартные библиотеки, доступные вместо регулярных выражений.

0 голосов
/ 10 декабря 2018

Я настоятельно рекомендую использовать модуль python pathlib.Он является частью стандартной библиотеки и предназначен для обработки путей к файлам.Некоторые примеры:

>>> from pathlib import Path
>>> p = Path(r"C:\Users\Bob\.luxshop\jeans\diesel-qd\images\Livier_11.png")
>>> p
WindowsPath('C:/Users/Bob/.luxshop/jeans/diesel-qd/images/Livier_11.png')
>>> p.name
'Livier_11.png'
>>> p.parts
('C:\\', 'Users', 'Bob', '.luxshop', 'jeans', 'diesel-qd', 'images', 'Livier_11.png')
>>> # construct a path from parts
...
>>> Path("C:\some_folder", "subfolder", "file.txt")
WindowsPath('C:/some_folder/subfolder/file.txt')
>>> p.exists()
False
>>> p.is_file()
False
>>>

Редактировать:

Если вы хотите использовать регулярное выражение, это должно работать:

>>> s = "C:\\Users\\Bob\\.luxshop\\jeans\\diesel-qd\\images\\Livier_11.png"
>>> import re
>>> match = re.match(r".*(\\.*)$", s)
>>> match.group(1)
'\\Livier_11.png'
>>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...