2015-02-02 5 views
1

xml.etree.ElementTree를 사용하여 파이썬 2.7.9의 선택적 필드를 포함하는 XML 문서를 구문 분석하려고합니다. 작동 그러나 'NoneType'개체가 어떤 속성 '인코딩'Python XML 구문 분석 - "is not"사용

이 없습니다 내가 사용하는 경우 :

- : 나는 다음과 같은 루프를 사용하는 경우

은 AttributeError

summary = curTag.find('summary') 
if summary is not None: 
    summary = curTag.find('summary').text.encode('utf8') 
    summary = summary.replace("'","'||chr(39)||'") 
    summary = summary[:4000] 

을 나는 오류를 얻을

summary = curTag.find('summary') 
if summary: 
    summary = curTag.find('summary').text.encode('utf8') 
    summary = summary.replace("'","'||chr(39)||'") 
    summary = summary[:4000] 

그러나 경고 메시지가 표시됩니다. FutureWarning :이 메서드의 동작은 이후 버전에서 변경됩니다. 대신 'len (elem)'또는 'elem is not None'테스트를 사용하십시오. summary.text가 None이 아닌 경우 :

방금 ​​R에서 Python으로 이동하여 왜 이런 일이 발생하는지 파악하려고합니다. (:, '/XML_Parsev1.0.py D'wdir = 'D :') 런 파일에

Traceback (most recent call last): 

파일 "", 줄 1 :


정확한 오류 추가

파일 "C : \ Python27 \ lib 디렉토리의 \ 사이트 - 패키지 \ spyderlib \ 위젯 \ externalshell \ sitecustomize.py", 라인 (601), 런 파일 execfile (파일 이름, 네임 스페이스)

파일 "C에서 : \ Python27 \ lib 디렉토리 \ site-packages \ sp 실행 파일 (컴파일 텍스트, 파일 이름, 'exec'), glob, loc)

파일 "D : /XML_Parsev1.0.py", yderlib \ widgets \ externalshell \ sitecustomize.py " . 요약 = curTag.find ('요약') text.encode ('UTF-8') 라인 69,

AttributeError : 'NoneType'개체가 어떤 속성 '인코딩'

+0

정확한 오류 메시지를 표시 할 수 있습니까? – Scironic

+1

어쩌면 나는 분명하지는 않지만 코드의 두 버전의 차이점은 무엇입니까? – Blckknght

+0

그리고 XML이 문제가되는 동안. – Tomalak

답변

1

이없는 것 같습니다 당신의 요약 태그 비어 있으므로 curTag.find('summary').textNone과 같습니다.

NoneNone이 문자열이 아니기 때문에 인코딩 할 수 없습니다. summary.textNone 경우, 다음 or 문이 완벽하게 encodable 인 빈 문자열을 반환하기 때문에

if summary: 
    summary = (curTag.find('summary').text or '').encode('utf8') 

이 작동 :

여기에 빠른 해결 방법입니다.