복붙노트

[PYTHON] 파이썬 문자열 리터럴에서 백 슬래시 인용

PYTHON

파이썬 문자열 리터럴에서 백 슬래시 인용

파이썬에서 변수에 설정하고자하는 큰 따옴표와 백 슬래시가 포함 된 문자열이 있습니다. 그러나 설정할 때마다 따옴표 나 슬래시가 제거되거나 이스케이프됩니다. 다음은 그 예입니다.

>>> foo = 'baz "\"'
>>> foo
'baz ""'

그래서 바즈 대신에 "\"나는 바스를 얻고 싶다 "". 백 슬래시를 벗어나려고해도 다음 중 하나도 도움이되지 않습니다.

>>> foo = 'baz "\\"'
>>> foo
'baz "\\"'

지금은 내가 넣은 것과 일치하지만 원래 내가 원했던 것은 아닙니다. 이 문제를 어떻게 해결할 수 있습니까?

해결법

  1. ==============================

    1.당신은 산출물에 대해 오도하고 있습니다. 당신이 실제로 취하는 두 번째 접근법은 당신이 원하는 것입니다. 당신은 그것을 믿지 않을 것입니다. :)

    당신은 산출물에 대해 오도하고 있습니다. 당신이 실제로 취하는 두 번째 접근법은 당신이 원하는 것입니다. 당신은 그것을 믿지 않을 것입니다. :)

    >>> foo = 'baz "\\"'
    >>> foo
    'baz "\\"'
    >>> print foo
    baz "\"
    

    덧붙여 말하자면, 약간 더 명확한 다른 문자열 형태가 있습니다 :

    >>> print r'baz "\"'
    baz "\"
    
  2. ==============================

    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. ==============================

    3.Harley가 말한 것, 마지막 점을 제외하고 - open을 호출하기 전에 /를 s로 변경하는 것은 실제로 필요하지 않습니다. Windows는 슬래시가있는 경로를 허용하게되어 매우 행복합니다.

    Harley가 말한 것, 마지막 점을 제외하고 - open을 호출하기 전에 /를 s로 변경하는 것은 실제로 필요하지 않습니다. Windows는 슬래시가있는 경로를 허용하게되어 매우 행복합니다.

    infile = open('c:/folder/subfolder/file.txt')
    

    당신이 쉘을 통해 (os.system 또는 서브 프로세스 모듈을 사용하여) 다른 프로그램으로 넘어가는 경우에만 정규 경로 문자열이 필요할 것입니다.

  4. ==============================

    4.백 슬래시를 사용하여 문자열을 끝내는 또 다른 방법은 문자열 뒤에 백 슬래시와 공백을 넣고 문자열에 .strip () 함수를 호출하는 것입니다.

    백 슬래시를 사용하여 문자열을 끝내는 또 다른 방법은 문자열 뒤에 백 슬래시와 공백을 넣고 문자열에 .strip () 함수를 호출하는 것입니다.

    두 개의 문자열 변수를 연결하고 백 슬래시로 구분하려고 했으므로 다음을 사용했습니다.

    newString = string1 + "\ ".strip() + string2
    
  5. from https://stackoverflow.com/questions/301068/quoting-backslashes-in-python-string-literals by cc-by-sa and MIT license