[PYTHON] XML에서 사용하기 위해 이스케이프 문자열
PYTHONXML에서 사용하기 위해 이스케이프 문자열
저는 Python의 xml.dom.minidom을 사용하여 XML 문서를 만듭니다. (논리 구조 -> XML 문자열, 다른 방법은 아닙니다.)
XML을 엉망으로 만들 수 없도록 제공하는 문자열을 어떻게 이스케이프 처리합니까?
해결법
-
==============================
1.다음과 같은 일을한다는 것을 의미합니까?
다음과 같은 일을한다는 것을 의미합니까?
from xml.dom.minidom import Text, Element t = Text() e = Element('p') t.data = '<bar><a/><baz spam="eggs"> & blabla &entity;</>' e.appendChild(t)
그렇다면 멋지게 이스케이프 된 XML 문자열을 얻을 수 있습니다.
>>> e.toxml() '<p><bar><a/><baz spam="eggs"> & blabla &entity;</></p>'
-
==============================
2.이 같은?
이 같은?
>>> from xml.sax.saxutils import escape >>> escape("< & >") '< & >'
-
==============================
3.xml.sax.saxutils.escape는 기본적으로 &, <, and> 만 이스케이프하지만 엔티티 매개 변수를 제공하여 추가로 다른 문자열을 이스케이프 처리합니다.
xml.sax.saxutils.escape는 기본적으로 &, <, and> 만 이스케이프하지만 엔티티 매개 변수를 제공하여 추가로 다른 문자열을 이스케이프 처리합니다.
from xml.sax.saxutils import escape def xmlescape(data): return escape(data, entities={ "'": "'", "\"": """ })
xml.sax.saxutils.escape는 내부적으로 str.replace ()를 사용하므로 MichealMoser의 답변에서 볼 수 있듯이 가져 오기를 건너 뛰고 고유 한 함수를 작성할 수도 있습니다.
-
==============================
4.xml.sax.saxutils는 따옴표 문자 ( ")를 이스케이프하지 않습니다.
xml.sax.saxutils는 따옴표 문자 ( ")를 이스케이프하지 않습니다.
여기 또 다른 것이 있습니다 :
def escape( str ): str = str.replace("&", "&") str = str.replace("<", "<") str = str.replace(">", ">") str = str.replace("\"", """) return str
당신이 그것을 찾으면 xml.sax.saxutils 만 문자열 바꾸기를 수행합니다.
-
==============================
5.다른 프로젝트 가져 오기를 원하지 않고 이미 cgi를 갖고 있다면 다음을 사용할 수 있습니다.
다른 프로젝트 가져 오기를 원하지 않고 이미 cgi를 갖고 있다면 다음을 사용할 수 있습니다.
>>> import cgi >>> cgi.escape("< & >") '< & >'
그러나이 코드의 가독성은 문제가 될 수 있습니다. 의도를 더 잘 설명 할 수있는 함수에 넣어야합니다. (그리고 그 코드를 읽는 동안 단위 테스트를 작성하십시오.)
def xml_escape(s): return cgi.escape(s) # escapes "<", ">" and "&"
from https://stackoverflow.com/questions/1546717/escaping-strings-for-use-in-xml by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] XLRD 패키지를 사용하여 Excel 시트 셀 색상 코드 식별 (0) | 2018.11.06 |
---|---|
[PYTHON] Tensorflow Mac을 설치할 수 없음 (0) | 2018.11.05 |
[PYTHON] Jython을위한 NumPy 클론이 있습니까? [닫은] (0) | 2018.11.05 |
[PYTHON] How to avoid [Errno 12] 서브 프로세스 모듈 사용으로 인한 메모리 오류를 할당 할 수 없습니다. (0) | 2018.11.05 |
[PYTHON] 창에 아나콘다가있는 tensorflow 설치하기 (0) | 2018.11.05 |