파이썬 문자열 리터럴에서 백 슬래시 인용
파이썬에서 변수로 설정하려는 큰 따옴표와 백 슬래시를 모두 포함하는 문자열이 있습니다. 그러나 설정하려고 할 때마다 따옴표 또는 슬래시가 제거되거나 이스케이프됩니다. 예를 들면 다음과 같습니다.
>>> foo = 'baz "\"'
>>> foo
'baz ""'
그래서 baz "\"
내가 원하는 대신에 baz ""
. 그런 다음 백 슬래시를 이스케이프하려고해도 도움이되지 않습니다.
>>> foo = 'baz "\\"'
>>> foo
'baz "\\"'
이제 내가 넣은 것과 일치하지만 원래 원했던 것이 아닙니다. 이 문제를 어떻게 해결합니까?
당신은 산출물에 의해 오도되고 있습니다. 당신이 취하는 두 번째 접근법은 실제로 당신이 원하는 것을하고, 당신은 그것을 믿지 않습니다. :)
>>> foo = 'baz "\\"'
>>> foo
'baz "\\"'
>>> print foo
baz "\"
덧붙여서, 좀 더 명확한 또 다른 문자열 형식이 있습니다.
>>> print r'baz "\"'
baz "\"
원시 문자열을 사용하십시오.
>>> foo = r'baz "\"'
>>> foo
'baz "\\"'
잘못 보이지만 실제로는 옳습니다. 문자열에는 백 슬래시가 하나만 있습니다 foo
.
이것은 foo
프롬프트에 입력하면 파이썬 __repr__()
이 문자열에 결과를 표시하기 때문에 발생 합니다. 이로 인해 다음이 발생합니다 (백 슬래시가 하나만 있고 print
ed 문자열 주위에 따옴표가 없음 ).
>>> foo = r'baz "\"'
>>> foo
'baz "\\"'
>>> print foo
baz "\"
그리고 더 많은 백 슬래시 트릭이 있기 때문에 계속합시다. 문자열 끝에 백 슬래시가 있고 위의 방법을 사용하려면 문제가 발생합니다.
>>> foo = r'baz \'
File "<stdin>", line 1
foo = r'baz \'
^
SyntaxError: EOL while scanning single-quoted string
그렇게하면 원시 문자열이 제대로 작동하지 않습니다. 일반 문자열을 사용하고 백 슬래시를 이스케이프해야합니다.
>>> foo = 'baz \\'
>>> print foo
baz \
그러나 Windows 파일 이름으로 작업하는 경우 약간의 고통이 있습니다. 원하는 것은 슬래시와 os.path.normpath()
함수를 사용하는 것입니다.
myfile = os.path.normpath('c:/folder/subfolder/file.txt')
open(myfile)
이것은 많은 탈출과 머리카락을 찢을 수 있습니다. 이 페이지 는 얼마 전에 이것을 다룰 때 편리했습니다.
마지막 요점을 제외하고 할리가 말한 것-실제로 open을 호출하기 전에 '/'를 '\'로 변경할 필요는 없습니다. Windows는 슬래시가있는 경로를 허용하는 것이 매우 기쁩니다.
infile = open('c:/folder/subfolder/file.txt')
normpathed 문자열이 필요할 가능성이있는 유일한 경우는 쉘을 통해 다른 프로그램으로 전달하는 경우입니다 ( os.system
또는 subprocess
모듈 사용).
백 슬래시로 문자열을 끝내는 또 다른 방법은 백 슬래시와 공백으로 문자열을 끝내고 문자열에서 .strip()
함수 를 호출하는 것입니다.
두 개의 문자열 변수를 연결하고 백 슬래시로 구분하여 다음을 사용했습니다.
newString = string1 + "\ ".strip() + string2
ReferenceURL : https://stackoverflow.com/questions/301068/quoting-backslashes-in-python-string-literals
'IT이야기' 카테고리의 다른 글
실행 파일이 PowerShell의 경로에 있는지 테스트 (0) | 2021.03.29 |
---|---|
rm -rf의 rf 의미 (0) | 2021.03.29 |
WordPress가 제대로 프로그래밍되지 않은 것으로 간주되는 이유 (0) | 2021.03.29 |
C # Winforms 굵은 리뷰 노드가 전체 텍스트를 표시하지 않을 경우 (0) | 2021.03.28 |
Eclipse의 모든 소스 파일에 표준 주석 헤더 추가 (0) | 2021.03.28 |