Удалить указанный c раздел строки - PullRequest
1 голос
/ 28 мая 2020

Привет, у меня есть файл, содержащий несколько тысяч путей к файлам, которые я хочу переместить в Wazhu. Проблема в том, что мне нужны каталоги, поэтому то, что у меня есть, выглядит как >/apples/oranges/test.ex< Мне нужно >/apples/oranges< Не уверен, лучше ли Regex или просто использовать str.replace(). Поскольку каждая строка отличается, мне нужно будет найти последний / и удалить его, а также все до <

Надеюсь, это имеет смысл.

Ответы [ 5 ]

0 голосов
/ 28 мая 2020

Вы можете написать

import re

s = '>/apples/oranges/test.ex<'

re.match(r'.*(?=\/)', s).group()

, который возвращает

>/apples/oranges

Это работает, потому что .* является жадным, поэтому он использует все косые черты до последней. (?=\/) - это положительный просмотр . group(0) тоже работает.

Демо

0 голосов
/ 28 мая 2020

вы имеете в виду, что хотите только все, кроме последнего «/»?

import os

file = open('file.txt', 'r')
for line in file.read().splitlines():
    print('/'.join(line.split('/',-1)[:-1]) + "<")
0 голосов
/ 28 мая 2020

Для этого вам не нужно регулярное выражение. Вы можете просто использовать: os.path.split

import os
head, tail = os.path.split("/apples/oranges/test.ex")
print(head)
Output: /apples/oranges

Я застрял с той же проблемой, вышеуказанный метод решил ее!

0 голосов
/ 28 мая 2020

Попробуйте /[^/\r\n]*<$ замените это <

демо

0 голосов
/ 28 мая 2020

Вот способ использования методов разделения и соединения:

s = '>/apples/oranges/test.ex<'
s = '/'.join(s.split('/')[:-1])+'<' # Splits s by '/', remove the last object, join them together, plus a '<'
print(s)

Вывод:

>/apples/oranges<
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...