2010-09-27 15 views
5

Sono un novizio pitone con un problema troppo difficile da affrontare.test di uguaglianza permissivo sulla stringa

Ho una stringa che definisce un percorso, se tutti gli spazi sono stati convertiti in caratteri di sottolineatura. Come posso trovare se corrisponde a un percorso reale?

ad es. una stringa come /some/path_to/directory_1/and_to/directory_2
con un percorso di vera e propria: /some/path_to/directory 1/and_to/directory 2

avviso che il percorso reale può contenere entrambi gli spazi e underscore.

Come posso inviarlo a os.path.exists() ???

grazie alessandro

risposta

5

Usa glob ma sostituendo ogni sottolineano con una gamma [ _]:

import glob 
glob.glob('/some/path_to/directory_1/and_to/directory_2'.replace('_', '[ _]')) 

Si noti che questo non riuscirà se il percorso contiene il carattere [. È possibile risolvere questo problema sostituendo per la prima volta [ con [[].

+0

... di * prima * sostituendo '[' con '[[]'. – Constantin

+0

piace questo? p1 = '/ some/path_to/directory_1/and_to/directory_2'.replace (' _ ' '[_]') p2 = '/ some/path_to/directory_1/and_to/directory_2'.replace ('[', ' [[] ') glob.glob (p2) – alessandro

+0

+1: Chi dimentica sul modulo glob sono destinati a tentare di ricreare male per un paio di minuti prima di colpire di aggiornamento sulla questione in modo da vedere una risposta da qualcuno che hasn' t. – MattH