2012-03-28 80 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