2013-03-12 9 views
5

Z napotkaniem problemu w Pythonie napotkałem ukośniki wsteczne poprzedzające cyfry w ciągu znaków. Używam środowiska systemu operacyjnego Windows.Cięcie w tył, a następnie liczba w pythonowych ciągach znaków

Staje się to szczególnie denerwujące, gdy masz numery na początku nazwy w katalogu.

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

To było dla mnie odkrycie, że można utworzyć znaki specjalne, jeśli nie "\ 1", "\ 2", "\ 3" ... i tak dalej. Jakkolwiek cudownie to wygląda, muszę zapytać, jak to zrobić, wyłączając tę ​​funkcję, czy też jaka jest inna funkcja ciągów, która nie ma tej specjalnej funkcji?

Dzięki!

+1

Czy to jest problem podczas używania wyrażeń regularnych? –

+0

Możesz użyć ukośnika w nazwach folderów/plików. –

+0

Nie użyłem tego dla wyrażeń regularnych i nie mogłem zastąpić ukośników wstecz do ukośników, ponieważ specjalna funkcja ("\ 8 ...") jest wywoływana jako pierwsza przed manipulacją zmienną łańcucha. Stało się tak, że dodałem nazwy plików za pomocą os.path.join(), co zaowocowało tym, co widzisz w powyższym przykładzie. To było zwykłe nieszczęście, że nie dołączamy plików jako nieprzetworzonego łańcucha. Dzięki icecrime! – AlexG

Odpowiedz

11

Masz dwie możliwości:

  • BACKSLASH te backslashe:

    "P:\\70_parseFile\\80_FileDir\\60_FA_050" 
    
  • Użyj raw string, w którym backslash traci swoją "szczególnego znaczenia"

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

Dziękujemy! Stosowanie nieprzetworzonego ciągu również automatycznie konwertuje zmienioną zmienną ciągu moich katalogów z pojedynczego ukośnika "\" na podwójny ukośnik "\\". – AlexG

2

\1, \2 itd. To wyrażenie regularne back-references. Nie powinno to wpływać na żadną funkcję, która nie przyjmuje wyrażeń regularnych.

Można użyć re.escape(), aby uniknąć tych ukośników.

re.escape()

Powrót ciąg ze wszystkimi nie-alfanumeryczne odwrotnym ukośnikiem; jest to przydatne , jeśli chcesz dopasować dowolny ciąg literalny, który może mieć regularne metaznaki wyrażeń w tym metodzie .

Powiązane problemy