2016-04-18 1 views
1

В Python есть простой способ извлечь строки, которые выглядят как пути из больших строк?Извлечь путь, как строки из строки

Например, если:

A = "This Is A String With A /Linux/Path" 

Что на моем пути! Заглядывая экстракт:

"/Linux/Path" 

Я также, как это будет независимый от ОС, так что если:

A = "This is A String With A C:\Windows\Path" 

Я хотел бы извлечь:

"C:\Windows\Path" 

Я угадывание есть способ сделать это с регулярными выражениями, которые ищут / или \, но я просто задавался вопросом, был ли еще более пифонический путь?

Я рад рискнуть, что / или \ могут существовать в другой части основной строки.

ответ

1

Вы можете разделить на os.sep и принять результаты, которые больше, чем один:

import os 

def get_paths(s, sep=os.sep): 
    return [x for x in s.split() if len(x.split(sep)) > 1] 

На Linux/OSX:

>>> A = "This Is A String With A /Linux/Path" 
>>> get_paths(A) 
['/Linux/Path'] 

для нескольких путей:

>>> B = "This Is A String With A /Linux/Path and /Another/Linux/Path" 
>>> get_paths(B) 
['/Linux/Path', '/Another/Linux/Path'] 

Mocking Windows:

>>> W = r"This is A String With A C:\Windows\Path" 
>>> get_paths(W, sep='\\') 
['C:\\Windows\\Path'] 
+0

Спасибо за ваш быстрый ответ - это должно сработать! – Mark