首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于letter的XML ParseError?

用于letter的XML ParseError?
EN

Stack Overflow用户
提问于 2019-11-09 01:20:04
回答 1查看 95关注 0票数 1

在尝试解析一些非常大的XML时,我遇到了解析错误。我能够将问题缩小到writeup标记中的某个地方,当我仅使用该部分重新运行我的代码时,它产生了以下回溯。

代码语言:javascript
复制
Traceback (most recent call last):
  File "<input>", line 3, in <module>
  File "path\to\Python\Python37-32\lib\xml\etree\ElementTree.py", line 1315, in XML
    parser.feed(text)
  File "<string>", line None
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 310

当我查看Atom中的第1行,第310列时,只有一个N,它在XML中不是禁止字符。为什么会出现这个问题,我该如何解决它?

代码

代码语言:javascript
复制
from xml.etree import ElementTree as etree
xml = """<writeup>&lt;p&gt;sVw*f4FgT9`|wXNz!x)McB})KDh*0O"47BKR;G4F3]p3!-?n!\'%_sP:3WuGw44yTGF""Mf=8d34:Pb0pCZF](d%+(V\'M3-i*Dr:#sS/o*[_Z$"8%F*H6_lr&amp;gt;I#lmd/RIUskV9@Ba\\poJ&amp;lt;GVG]5CVIeJJytI7]q{pJQLF/&amp;amp;N:kYrJ^3s"aCdHupx@_/Ool9qfo1.?$cdd&amp;gt;u{Xi|yQyPahZ88ayU;DX[eDr9p?G)"*I^VG4xvJjZDCTUr1@qE6e=By_^YINk!\x02~eU3v1(pgU-\\"(*)[dg#}cVG&amp;gt;2b=P-uH9z?fOS9amy\'e~ZO,2?,^cAWpt;jo+`p/D`B&amp;gt;&amp;gt;NLDqhN~&amp;lt;"=_"DU0V^kqDTN=7EWZL|ax&amp;amp;7dn&amp;gt;]u1C)-[}~wuS",je`OOGIwT1g.jSe:3!tn^E2z!|4)B+rUV@6&amp;amp;~,(iv,A%`W_\')E"kdD({ppNuPts%P%/Gi;`Hx-P/}WX(\\&amp;amp;N2[pSy=\'9D1b?XNKG*E.@v3riX]Dq@8EEt;OA3:Uav3\'2^\\r;|Ck75}inlV)TrTFGgsI{wLx/KrmehxiwK*9^"UGa8DAV?wd~\\)gP4!r}(Y0Sx^ssxS^6zx4)#XS7|.bxFbV`t\\D,w\\YqW+&amp;amp;%v)+&amp;amp;fFtl]g28M61m34gD=|w{~OmjKbJr1QOI7I%]X\'m*r-p=sUeE.L-"rXR`L&amp;gt;,nz{%\';3VY:aAKQa~ngm"Sx$3RxB!AH$O^t1&amp;lt;9~t}ujaZ}D2\'*\\b}gGMBg4,`m9WL0Eo&lt;/p&gt;</writeup>"""
root = etree.fromstring(xml)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-09 03:14:13

问题出在字符串中的\x02。Python认为这是一个ASCII十六进制字符。

尝试将字符串设置为原始字符串,方法是在字符串前面加上"r“。这将使\成为原义字符而不是转义字符。

例如。

代码语言:javascript
复制
xml = r"""<writeup>&lt;p&gt;sVw*f4FgT9`|wXNz!x)McB})KDh*0O"47BKR;G4F3]p3!-?n!\'%_sP:3WuGw44yTGF""Mf=8d34:Pb0pCZF](d%+(V\'M3-i*Dr:#sS/o*[_Z$"8%F*H6_lr&amp;gt;I#lmd/RIUskV9@Ba\\poJ&amp;lt;GVG]5CVIeJJytI7]q{pJQLF/&amp;amp;N:kYrJ^3s"aCdHupx@_/Ool9qfo1.?$cdd&amp;gt;u{Xi|yQyPahZ88ayU;DX[eDr9p?G)"*I^VG4xvJjZDCTUr1@qE6e=By_^YINk!\x02~eU3v1(pgU-\\"(*)[dg#}cVG&amp;gt;2b=P-uH9z?fOS9amy\'e~ZO,2?,^cAWpt;jo+`p/D`B&amp;gt;&amp;gt;NLDqhN~&amp;lt;"=_"DU0V^kqDTN=7EWZL|ax&amp;amp;7dn&amp;gt;]u1C)-[}~wuS",je`OOGIwT1g.jSe:3!tn^E2z!|4)B+rUV@6&amp;amp;~,(iv,A%`W_\')E"kdD({ppNuPts%P%/Gi;`Hx-P/}WX(\\&amp;amp;N2[pSy=\'9D1b?XNKG*E.@v3riX]Dq@8EEt;OA3:Uav3\'2^\\r;|Ck75}inlV)TrTFGgsI{wLx/KrmehxiwK*9^"UGa8DAV?wd~\\)gP4!r}(Y0Sx^ssxS^6zx4)#XS7|.bxFbV`t\\D,w\\YqW+&amp;amp;%v)+&amp;amp;fFtl]g28M61m34gD=|w{~OmjKbJr1QOI7I%]X\'m*r-p=sUeE.L-"rXR`L&amp;gt;,nz{%\';3VY:aAKQa~ngm"Sx$3RxB!AH$O^t1&amp;lt;9~t}ujaZ}D2\'*\\b}gGMBg4,`m9WL0Eo&lt;/p&gt;</writeup>"""

在实际代码中,如果要从外部源获取字符串形式的XML,请尝试使用.encode("unicode-escape")对字符串进行编码

代码语言:javascript
复制
root = etree.fromstring(xml.encode("unicode-escape"))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58771172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档