如何解决XML数据中某些特殊字符的“ ParseError:格式不正确”错误
我有以下代码来清理日志文件以从其中获取XML(日志文件格式不正确且没有root),然后解析并执行其他功能。清理工作正常,但是XML Parser却给我一些包含某些特殊字符的xml数据抛出错误。我的代码如下:
with open(log_file,'r') as fr,open('XMLinLog2.xml','w') as fw:
fw.write("<document>\n")
for line in fr:
if line.strip().startswith('<'):
fw.write('\t' + line)
fw.write("\n</document>")
# --- Parsing Log files after cleanup ---
doc = ET.parse('XMLinLog2.xml')
引发我错误的日志文件中的xml数据用于; (1)运筹帷23 23:59 和(2) [单声道@ 90°>> +1 清理后在日志文件中显示为 Ops Dactivation 23:59 和 [mono @ 90. >> +1 ”。 所以我弄清楚了-角色正在引起问题。 问题:
- 如何处理此错误?
- 如果我需要打印这些数据,如何正确打印它们?我不想打印。因为我假设只要输入é法语文本,它就会抛出错误。
完整错误在这里: 比赛(最近一次通话过去): 文件“ C:/Users/PycharmProjects/IMSS_TestHarness/Libraries/try.py”,第23行,在 doc = ET.parse('XMLinLog2.xml') 解析中的文件“ C:\ Users \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ xml \ etree \ ElementTree.py”,行1202 tree.parse(来源,解析器) 解析中的文件“ C:\ Users \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ xml \ etree \ ElementTree.py”,第595行 self._root = parser._parse_whole [源代码) xml.etree.ElementTree.ParseError:格式不正确(令牌无效):3299行,第22列
以退出代码1完成的过程
日志文件:
1. 2020-08-03 15:59:54.635 (72,Effective Commit) Info Sending:
<U_DisplayCommand>
<DestinationId>5035</DestinationId>
<DisplayId>1</DisplayId>
<LineTextEnglish>
<Line>Ops Disabled 23:59 N</Line>
</LineTextEnglish>
<LineTextFrench>
**<Line>Ops Désactivée 23:59</Line>**
</LineTextFrench>
</U_DisplayCommand>
<U_DisplayCommand>
<DestinationId>5085</DestinationId>
<DisplayId>1</DisplayId>
<LineTextEnglish>
<Line>Vaudreuil-Dori P123A</Line>
<Line>[ mono @ 90° >> +1</Line>
</LineTextEnglish>
<LineTextFrench>
<Line>Vaudreuil-Dori P123A</Line>
<Line>[ mono @ 90° >> +1</Line>
</LineTextFrench>
</U_DisplayCommand>
谢谢。
解决方法
实际上添加编码对我有用。
with open(log_file,'r') as fr,open('XMLinLog2.xml','w',encoding='utf-8') as fw:
fw.write("<document>\n")
for line in fr:
if line.strip().startswith('<'):
fw.write('\t' + line)
fw.write("\n</document>")
# --- Parsing Log files after cleanup ---
doc = ET.parse('XMLinLog2.xml')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。