[PYTHON] 파이썬 문자열 리터럴에서 백 슬래시 인용
PYTHON파이썬 문자열 리터럴에서 백 슬래시 인용
파이썬에서 변수에 설정하고자하는 큰 따옴표와 백 슬래시가 포함 된 문자열이 있습니다. 그러나 설정할 때마다 따옴표 나 슬래시가 제거되거나 이스케이프됩니다. 다음은 그 예입니다.
>>> foo = 'baz "\"'
>>> foo
'baz ""'
그래서 바즈 대신에 "\"나는 바스를 얻고 싶다 "". 백 슬래시를 벗어나려고해도 다음 중 하나도 도움이되지 않습니다.
>>> foo = 'baz "\\"'
>>> foo
'baz "\\"'
지금은 내가 넣은 것과 일치하지만 원래 내가 원했던 것은 아닙니다. 이 문제를 어떻게 해결할 수 있습니까?
해결법
-
==============================
1.당신은 산출물에 대해 오도하고 있습니다. 당신이 실제로 취하는 두 번째 접근법은 당신이 원하는 것입니다. 당신은 그것을 믿지 않을 것입니다. :)
당신은 산출물에 대해 오도하고 있습니다. 당신이 실제로 취하는 두 번째 접근법은 당신이 원하는 것입니다. 당신은 그것을 믿지 않을 것입니다. :)
>>> foo = 'baz "\\"' >>> foo 'baz "\\"' >>> print foo baz "\"
덧붙여 말하자면, 약간 더 명확한 다른 문자열 형태가 있습니다 :
>>> print r'baz "\"' baz "\"
-
==============================
2.원시 문자열 사용 :
원시 문자열 사용 :
>>> foo = r'baz "\"' >>> foo 'baz "\\"'
비록 그것이 틀리게 보더라도, 실제로 옳다는 것을주의하십시오. 문자열 foo에는 백 슬래시가 하나만 있습니다.
이는 프롬프트에서 foo를 입력하기 만하면 python이 문자열에 __repr __ () 결과를 표시하기 때문에 발생합니다. 이로 인해 다음과 같이됩니다 (백 슬래시가 하나 뿐이며 인쇄 된 문자열 주위에는 따옴표가 없습니다).
>>> 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)
이것은 탈출과 머리카락 찢어짐을 많이 줄일 수 있습니다. 이 페이지는 잠시 전에 살펴볼 때 편리했습니다.
-
==============================
3.Harley가 말한 것, 마지막 점을 제외하고 - open을 호출하기 전에 /를 s로 변경하는 것은 실제로 필요하지 않습니다. Windows는 슬래시가있는 경로를 허용하게되어 매우 행복합니다.
Harley가 말한 것, 마지막 점을 제외하고 - open을 호출하기 전에 /를 s로 변경하는 것은 실제로 필요하지 않습니다. Windows는 슬래시가있는 경로를 허용하게되어 매우 행복합니다.
infile = open('c:/folder/subfolder/file.txt')
당신이 쉘을 통해 (os.system 또는 서브 프로세스 모듈을 사용하여) 다른 프로그램으로 넘어가는 경우에만 정규 경로 문자열이 필요할 것입니다.
-
==============================
4.백 슬래시를 사용하여 문자열을 끝내는 또 다른 방법은 문자열 뒤에 백 슬래시와 공백을 넣고 문자열에 .strip () 함수를 호출하는 것입니다.
백 슬래시를 사용하여 문자열을 끝내는 또 다른 방법은 문자열 뒤에 백 슬래시와 공백을 넣고 문자열에 .strip () 함수를 호출하는 것입니다.
두 개의 문자열 변수를 연결하고 백 슬래시로 구분하려고 했으므로 다음을 사용했습니다.
newString = string1 + "\ ".strip() + string2
from https://stackoverflow.com/questions/301068/quoting-backslashes-in-python-string-literals by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] pickle.dump 사용 - TypeError : 바이트가 아닌 str이어야합니다. (0) | 2018.10.04 |
---|---|
[PYTHON] 파이썬에서 '>> 0이 참인 이유는 무엇입니까? (0) | 2018.10.04 |
[PYTHON] ValueError : numpy.dtype의 크기가 잘못되었습니다. 다시 컴파일 해보십시오. (0) | 2018.10.04 |
[PYTHON] 파이썬의 다중 핑 스크립트 (0) | 2018.10.04 |
[PYTHON] 비표준 위치에 SSL을 지원하는 Python 구현 (0) | 2018.10.04 |