복붙노트

[PYTHON] 파이썬에서 이중 백 슬래시를 단일 백 슬래시로 바꾸는 방법은 무엇입니까?

PYTHON

파이썬에서 이중 백 슬래시를 단일 백 슬래시로 바꾸는 방법은 무엇입니까?

나는 문자열이 있습니다. 이 문자열에는 이중 백 슬래시가 있습니다. 이중 백 슬래시를 단일 백 슬래시로 바꾸므로 유니 코드 char 코드를 올바르게 구문 분석 할 수 있습니다.

(Pdb) p fetched_page
'<p style="text-align:center;" align="center"><strong><span style="font-family:\'Times New Roman\', serif;font-size:115%;">Chapter 0<\\/span><\\/strong><\\/p>\n<p><span style="font-family:\'Times New Roman\', serif;font-size:115%;">Chapter 0 in \\u201cDreaming in Code\\u201d give a brief description of programming in its early years and how and why programmers are still struggling today...'

이 문자열 안에 이스케이프 처리 된 유니 코드 문자 코드 (예 :

\\u201c

나는 이것을 다음과 같이 바꾸고 싶다.

\u201c

시도 1 :

fetched_page.replace('\\\\', '\\')

하지만 이것은 작동하지 않습니다 - 그것은 4 배의 백 슬래시를 찾습니다.

시도 2 :

fetched_page.replace('\\', '\')

그러나 이로 인해 라인 오류가 발생합니다.

시도 3 :

fetched_page.decode('string_escape')

그러나 이것은 본문에 아무런 영향을 끼치 지 않았다. 모든 이중 백 슬래시는 이중 백 슬래시로 유지됩니다.

해결법

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

    1.codecs.escape_decode를 시도해보십시오. 이스케이프 시퀀스를 디코딩해야합니다.

    codecs.escape_decode를 시도해보십시오. 이스케이프 시퀀스를 디코딩해야합니다.

  2. ==============================

    2.나는 당신이 묘사하는 행동을 얻지 못한다.

    나는 당신이 묘사하는 행동을 얻지 못한다.

    >>> x = "\\\\\\\\"
    >>> print x
    \\\\
    >>> y = x.replace('\\\\', '\\')
    >>> print y
    \\
    

    출력에서 '\\\\'을 볼 때, 각이 이스케이프되기 때문에 문자열에있는 수만큼 슬래시가 두 번 표시됩니다. 작성한 코드는 잘 작동합니다. REPL이 어떻게 표시하는지 보지 않고 실제 값을 출력하려고합니다.

  3. ==============================

    3.Jeremy의 대답을 확장하기 위해 \ '는 인용 부호를 이스케이프하므로 문자열이 종료되지 않으므로'\ '는 잘못된 문자열입니다.

    Jeremy의 대답을 확장하기 위해 \ '는 인용 부호를 이스케이프하므로 문자열이 종료되지 않으므로'\ '는 잘못된 문자열입니다.

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

    4.약간 과잉이라고 할지도 모르지만 ...

    약간 과잉이라고 할지도 모르지만 ...

    >>> import re
    >>> a = '\\u201c\\u3012'
    >>> re.sub(r'\\u[0-9a-fA-F]{4}', lambda x:eval('"' + x.group() + '"'), a)
    '“〒'
    

    그래, 가장 간단한 해결책은 ms4py의 대답이다. 문자열에 codecs.escape_decode를 호출하고 결과 (또는 escape_decode가 파이썬 3에서와 같이 튜플을 반환하면 결과의 첫 번째 요소)를 가져온다. 하지만 Python 3에서는 문자열 작업 (바이트 객체가 아닌)을 할 때 codecs.unicode_escape_decode를 사용하려고합니다.

  5. ==============================

    5.그냥 인쇄해라.

    그냥 인쇄해라.

    >>> a = '\\u201c'
    >>> print a
    \u201c
    
  6. from https://stackoverflow.com/questions/6752485/how-to-replace-a-double-backslash-with-a-single-backslash-in-python by cc-by-sa and MIT license