2012-03-28 86 views
0

解析出某些XML專利發明人數據時,出現AttributeError: 'NoneType' object has no attribute 'encode'錯誤。我想第一發明人加上他們的地址信息來源拉成字符串下面這樣:AttributeError:'NoneType'對象沒有使用lxml-python屬性'encode'

inventor1 = first(doc.xpath('//applicants/applicant/addressbook/last-name/text()')) 
inventor2 = first(doc.xpath('//applicants/applicant/addressbook/first-name/text()')) 
inventor3 = first(doc.xpath('//applicants/applicant/addressbook/address/city/text()')) 
inventor4 = first(doc.xpath('//applicants/applicant/addressbook/address/state/text()')) 
inventor5 = first(doc.xpath('//applicants/applicant/addressbook/address/country/text()')) 
inventor = str(inventor2.encode("UTF-8")) + " " + str(inventor1.encode("UTF-8")) 
inventors2 = str(inventor3.encode("UTF-8")) + ", " + str(inventor4) + ", " + str(inventor5) 
inventors = str(inventor) + ", " + str(inventors2) 

print "DocID: {0}\nGrantDate: {1}\nApplicationDate: {2}\nNumber of Claims: {3}\nExaminers: {4}\nAssignee: {5}\nInventor: {6}\n".format(docID,grantdate,applicationdate,claimsNum,examiners.encode("UTF-8"),assignees,inventors) 

,但有問題的,因爲是在這漫長的xml多個部分UnicodeEncodeError: 'ascii' codec can't encode character。我需要有.encodes我的Python中,所以我不創建一個錯誤,但這樣做我得到這個:

Traceback (most recent call last): 
    File "C:\Documents and Settings\Desktop\FINAL BART INFO ONE.py", line 87, in <module> inventor = str(inventor2.encode("UTF-8")) + " " + str(inventor1.encode("UTF-8")) 
AttributeError: 'NoneType' object has no attribute 'encode' 

反正要麼忽略返回的「無」值時,無所不有?我必須def或爲我的print使用不同類型的.encode

順便說一句,我從輸入文件創建數據庫實際上是多個XML文件附加到一個文件。 (數據文件來自Google Patents)。

回答

4

你總是可以只是做快速和骯髒的str(inventor1.encode("UTF-8") if inventor1 else inventor1)

+0

我誤上下一行作爲'inventors2 = STR(inventor3.encode( 「UTF-8」))+ 「」 + STR(inventor4) '。我能否把你的建議放在'str(發明人4,如果發明人4是其他發明人4)'?這會工作嗎? – 2012-03-28 19:16:53

+0

那麼,那就沒有意義了,因爲你會說如果一個其他人總是得到一個。如果y和z不同,那麼只有x指向x。無論如何,下一行中的問題並不是發明人4,我敢打賭,這正是發明人2的同一個編碼調用。並且爲此你可以再次使用x if y else z。然而,這裏更大的問題就是爲什麼你不只是在某種循環中完成這一切。 – 2012-03-28 19:25:42

+0

嘿你的權利 - 我得到它的工作。我只是把它們放在像'發明家2'這樣的.encode上。我這樣做的原因是A)我的老闆希望我以這種方式生成數據,這樣他就可以理解並且B)我的Python和這種方法的知識也有限,而粗糙的,允許我收集我解析時需要的一切。感謝您的有用答案+1 – 2012-03-28 19:31:21