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