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)。
我誤上下一行作爲'inventors2 = STR(inventor3.encode( 「UTF-8」))+ 「」 + STR(inventor4) '。我能否把你的建議放在'str(發明人4,如果發明人4是其他發明人4)'?這會工作嗎? – 2012-03-28 19:16:53
那麼,那就沒有意義了,因爲你會說如果一個其他人總是得到一個。如果y和z不同,那麼只有x指向x。無論如何,下一行中的問題並不是發明人4,我敢打賭,這正是發明人2的同一個編碼調用。並且爲此你可以再次使用x if y else z。然而,這裏更大的問題就是爲什麼你不只是在某種循環中完成這一切。 – 2012-03-28 19:25:42
嘿你的權利 - 我得到它的工作。我只是把它們放在像'發明家2'這樣的.encode上。我這樣做的原因是A)我的老闆希望我以這種方式生成數據,這樣他就可以理解並且B)我的Python和這種方法的知識也有限,而粗糙的,允許我收集我解析時需要的一切。感謝您的有用答案+1 – 2012-03-28 19:31:21