Napotkałem problem z re
modułem w Pythonie 3.6.5. Mam ten wzorzec w moim wyrażeniu regularnym:
'\\nRevision: (\d+)\\n'
Ale kiedy go uruchomię, otrzymuję plik DeprecationWarning
.
Szukałem problemu na SO i nie znalazłem odpowiedzi, właściwie - czego zamiast tego użyć \d+
? Tylko [0-9]+
czy może coś innego?
python
regex
python-3.x
mchfrnc
źródło
źródło
\d
czy użycier'\\nRevision: (\d+)\\n'
?Odpowiedzi:
Python 3 interpretuje literały łańcuchowe jako ciągi znaków Unicode, a zatem Twój
\d
jest traktowany jako znak Unicode ze zmianą znaczenia.Zamiast tego zadeklaruj swój wzorzec wyrażenia regularnego
r
jako nieprzetworzony ciąg znaków, poprzedzając go , jak poniżej:Oznacza to również, że możesz również porzucić
\n
znaki ucieczki, ponieważ zostaną one po prostu przeanalizowane jako znaki nowej linii przezre
.źródło
\d
jest traktowany jako nierozpoznana sekwencja ucieczki i jako taka pozostaje niezmieniona. Od czasu Pythona 3.6 jest podawane ostrzeżenie DeprecationWarning. W niektórych przyszłych wersjach Pythona będzie to błąd SyntaxError. Szczegóły z „2.4.1. Literały ciągów i bajtów” w Dokumentach.'\\d'
.