2011-06-13 7 views
1

파이썬의 엘리먼트 트리 라이브러리를 사용하여 MySQL 쿼리 브라우저에서 내 보낸 .XML 파일을 구문 분석합니다. 결과 세트를 .XML로 내보낼 때 편집기에 녹색 둥근 사각형으로 강조 표시된 글자 "BS"로 나타나는이 이상한 문자가 포함됩니다. 어쨌든 나는 파일을 통해 반복하고 수동으로 문자를 교체하려고 (스크린 샷 참조)하지만 나는이 작업을 수행 한 후 때문에 일치하지합니다ElementTree.parse를 사용하여 XML 파일을 구문 분석하는 중 오류가 발생했습니다.

for lines in file: 
    lines.replace("<Weird Char>", "").strip(); 

나는 구문 분석 방법에서 오류가 발생합니다. 그러나 수동으로 워드 패드/메모장 등에서 문자를 바꿀 경우 ... 구문 분석 호출이 올바르게 작동합니다. 나는 그것을 수동으로 할 필요없이 캐릭터를 파싱 할 방법을 찾고있다.

도움이 될 것입니다. 스크린 샷 2 개를 포함 시켰습니다. 편집자에게 문자가 표시되는 방식과 Chrome에 표시되는 방식 중 하나가 포함되었습니다.

감사

screen shot from my editor screen shot from chrome

편집 : 당신은 아마 이미지를 확대해야합니다, 죄송합니다.

+0

오류가 무엇입니까? – Keith

+0

python parse.py zombie.xml 0x7ff3e458에서 모드 'r'을 열 때

답변

1

백 스페이스 문자가 유효한 XML 문자가 아니므로 이스케이프해야합니다 (&#08;). MySQL이 여기서 그 일을하지 않는다는 것에 놀랐지 만 MySQL에 익숙하지 않습니다. 테이블에 대한 유효한 데이터가 아닌 경우 데이터를 점검하고 갱신 명령문으로 정리하여 해당 문자를 제거 할 수도 있습니다.

지금까지 파이썬에서 그것을 구문 분석,이 작동합니다 :

lines.replace("\b", "&#08;") 
+0

은 백 스페이스 문자입니다. ? 그것이 원래 생각했던 것입니다.하지만 크롬에 붙여 넣을 때 저에게 이상한 상징을주었습니다. 또한 Backspace의 인코딩은 무엇입니까? –

+0

다른 캐릭터가 무엇인지 알 수 없습니다. 같은 편집기를 사용하지 않지만 16 진수 편집기에서 XML을 열면 거기에 BS 문자가 표시됩니다 (ASCII 8). 그리고 예, ''은 백 스페이스 문자의 이스케이프 코드입니다 (세미콜론을 잊지 마세요). –

+0

고마워, 아프다. –

관련 문제