2017-02-17 5 views
0

я в настоящее время есть строка формата:Получение подстроки между подстрокой в ​​конце и перед ним

/Users/me/Documents/Project/zh-Hant-TW.lproj 

Я хочу, чтобы выделить строку между словом .lproj и косой чертой / непосредственно перед ним. Результат должен быть zh-Hant-TW. До сих пор я пытаюсь использовать:

print(myString[len("/"):-len(".lproj")]) 

Однако это собирание самый первый / и результат есть:

Users/me/Documents/Project/zh-Hant-TW

Не знаете, как идти об этом. Попробовал обратить вспять строку и работать назад, но это только что получилось беспорядок. Любые советы или указатели на то, как это сделать? Благодаря

+0

'os.path.splitext' может выполнить половину задания для вас. Я так понимаю, вы можете догадаться, какая половина. Один из способов получить вторую половину - это 'stem.split ('/')', который дает вам список всех бит между слэшами. Где «ствол» - это то, что вы получаете на первом этапе. –

+0

'' /Users/me/Documents/Project/zh-Hant-TW.lproj".split ("/") [- 1] .split (".") [0] '? – Abdou

ответ

0

Попробуйте это:

import os 

print os.path.basename('/Users/me/Documents/Project/zh-Hant-TW.lproj').split('.')[0] 

>> zh-Hant-TW 
0

Вы должны использовать os.path библиотеки питона, который может помочь вам справиться с проблемами, связанными с пути элегантно.

import os 
basename = os.path.basename(myString) 
filename = os.path.splitext(filename)[0] 
1

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

import os 

print(os.path.splitext(os.path.basename(myString))[0]) 
0

Поскольку уже есть несколько ответов, используя os модуль, здесь один с помощью регулярных выражений ...

import re 

path = '/Users/me/Documents/Project/zh-Hant-TW.lproj' 

results = re.findall(r'(?<=Project\/)(.*).lproj', path')[0] 

# results = 'zh-Hant-TW' 
Смежные вопросы