2013-03-12 19 views
5

Ho riscontrato un problema in Python quando si tratta di barre rovesciate seguite da numeri all'interno di una stringa. Io uso l'ambiente Windows OS.barra rovesciata seguita da un numero in stringhe python

Questo diventa particolarmente fastidioso quando si hanno numeri all'inizio di un nome in una directory.

Es: "P:\70_parseFile\80_FileDir\60_FA_050"

Questa è stata una scoperta per me che è possibile creare caratteri speciali se lo fai "\ 1", "\ 2", "\ 3" ... e così via. Per quanto meraviglioso possa sembrare, devo chiederti come disattivarlo, o quale altra funzione di stringa diversa è lì che non ha questa funzione speciale?

Grazie, tutto!

+1

Questo è solo un problema quando si usano espressioni regolari? –

+0

È possibile utilizzare la barra diretta nei nomi di cartelle/file. –

+0

Non l'ho usato per le regex e nemmeno ho potuto sostituire le barre all'indietro per far scorrere le barre quando la funzione speciale ("\ 8 ...") viene chiamata prima di ogni manipolazione di variabili stringa. Quello che è successo è che ho aggiunto nomi di file usando os.path.join() che ha portato a ciò che vedi nell'esempio sopra. È stata una semplice disgrazia non accodare file come stringa grezza. Grazie a Icecrime! – AlexG

risposta

11

si hanno due scelte:

  • backslash quei backslash:

    "P:\\70_parseFile\\80_FileDir\\60_FA_050" 
    
  • Utilizzare un raw string, in cui il backslash perde il suo "significato speciale"

    r"P:\70_parseFile\80_FileDir\60_FA_050" 
    
+0

Grazie! L'utilizzo della stringa raw ha anche convertito automaticamente la mia variabile di stringa di directory convertita dalla singola barra "\" alla doppia barra "\\". – AlexG

2

\1, \2, ecc. Espressione regolare back-references. Qualsiasi funzione che non assume espressioni regolari non dovrebbe essere influenzata da questo.

È possibile utilizzare re.escape() per sfuggire a quelle barre posteriori.

re.escape()

stringa di ritorno con tutti i non-alfanumerici backslash; questo è utile se si desidera abbinare una stringa letterale arbitraria che potrebbe avere normali metacaratteri di espressione nell'espressione.

Problemi correlati