DeprecationWarning: 잘못된 이스케이프 시퀀스 - \d 대신 사용할 항목
에 문제가 생겼다.re
Python 3.6.5의 모듈.정규 표현에는 다음과 같은 패턴이 있습니다.
'\\nRevision: (\d+)\\n'
하지만 막상 해보니까DeprecationWarning
.
SO에서 문제를 검색했지만 실제로는 답을 찾지 못했습니다.\d+
?그냥...[0-9]+
아니면 다른 거라도?
Python 3은 문자열 리터럴을 Unicode 문자열로 해석하기 때문에\d
는 이스케이프된 Unicode 문자로 취급됩니다.
RegEx 패턴을 미가공 문자열로 선언하는 대신 프리펜딩r
이하와 같습니다.
r'\nRevision: (\d+)\n'
이것은 또한 당신이 탈출구를 떨어뜨릴 수 있다는 것을 의미합니다.\n
이것들은 단지 줄바꿈 문자로 해석될 것이기 때문에re
.
사용 중지 경고가 표시됩니다.
'\\nRevision: (\d+)\\n'
왜냐하면 Python은\d
유효하지 않은 이스케이프 시퀀스입니다.현재 Python은 이 서브스트링을 대체하지 않고 Version 3.6부터 경고하고 있습니다.
표준 C와 달리 인식되지 않는 이스케이프 시퀀스는 모두 변경되지 않은 상태로 남아 있습니다.즉, 백슬래시는 결과에 남습니다(이 동작은 디버깅 시 도움이 됩니다.에스케이프 시퀀스가 잘못 입력되어 있는 경우 출력은 파손된 것으로 인식되기 쉽습니다).또한 스트링 리터럴에서만 인식되는 이스케이프 시퀀스는 바이트 리터럴에서 인식되지 않는 이스케이프 카테고리에 속한다는 점도 중요합니다.
버전 3.6에서 변경됨: 인식되지 않는 이스케이프 시퀀스는 Deprecation Warning을 생성합니다.향후 Python 버전에서는 SyntaxWarning이 되고 최종적으로 SyntaxError가 됩니다.
(소스)
따라서 이 경고를 수정하려면 해당 백슬래시를 올바르게 이스케이프하거나 원시 문자열을 사용합니다.
즉, 더 많이 탈출할 수 있습니다.
'\\nRevision: (\\d+)\\n'
또는 raw 문자열 리터럴을 사용합니다(여기서).\
는 이스케이프 시퀀스를 시작하지 않습니다).
r'\nRevision: (\d+)\n'
언급URL : https://stackoverflow.com/questions/50504500/deprecationwarning-invalid-escape-sequence-what-to-use-instead-of-d
'itsource' 카테고리의 다른 글
Java 8에서 UTC+0 날짜를 얻는 방법 (0) | 2022.10.15 |
---|---|
Java regex 캡처 그룹 인덱스 (0) | 2022.10.15 |
SQLSTATE [22007]:잘못된 날짜/시간 형식: 1292 잘못된 날짜/시간 값: '2008-03-30 02:56:12' (0) | 2022.10.15 |
내부 교체 방법jQuery를 사용하는 div의 HTML? (0) | 2022.10.15 |
jQuery의 현재 날짜를 얻는 방법 (2) | 2022.10.15 |