使用 ElementTree 解析具有特殊字符的 XML

2023-12-13

我尝试使用 GET 服务进行解析ElementTree,其内容我不控制,包含非 UTF8 特殊字符:

respXML = response.content.decode("utf-8")

respRoot = ET.fromstring(respXML)

第二行抛出

xml.etree.ElementTree.ParseError:引用无效字符号:第 3591 行,第 39 列

如何确保无论字符集如何都能解析 XML,如果发现非法字符,我可以稍后对其运行替换?例如,是否存在一种包含所有内容的编码?我知道我可以搜索并替换输入 XML 字符串,但我更愿意先解析它,因为我的解析将其转换为更易于搜索的数据结构。

有问题的特殊字符是&#25;但我希望能够摄取任何角色。整个标签是<literal>Alzheimer&#25;s disease</literal>.


在 @tdelaney 的帮助下,我通过将输入 XML 作为字符串进行清理来克服了这个障碍:

respXML = response.content.decode("utf-8")

scrubbedXML = re.sub('&.+[0-9]+;', '', respXML)

respRoot = ET.fromstring(scrubbedXML)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ElementTree 解析具有特殊字符的 XML 的相关文章

随机推荐

  • 如何将列表中的所有整数相乘[重复]

    这个问题在这里已经有答案了 你好 我想将列表中的整数相乘 例如 l 1 2 3 l 1 2 2 2 3 2 output l 2 4 6 所以我在网上搜索 大多数答案都是关于将所有整数相乘 例如 1 2 3 Try a 列表理解 l x 2
  • 如何在多个视图控制器中从最后一个视图控制器移动到第一个视图控制器

    嗨 我是 iPhone 编程新手 有人可以帮我吗 我有多个 viewController 在第一个名为 HomeViewController 的 ViewController 中 我调用了该方法 self presentModalViewC
  • 密码分页总结果计数

    我有一个巨大的密码查询 我需要对其结果进行分页 我想做的是在限制完成之前获取结果总数 这是我的测试图 http console neo4j org id 6hq9tj 我尝试使用count o 在查询的所有部分 但我总是得到相同的结果 总数
  • 无法在 android api 23 上打开位置?

    我使用了以下代码 请求许可的对话按预期显示 但当我点击 允许 时 它什么也没做 日志消息不会显示为好像未授予权限 因此我转到参数来验证位置是否为 打开 以及 关闭 难道不是因为我授予应用程序访问我的位置的权限而应该打开它吗 如果我手动 打开
  • 如何为维恩图准备 Pandas df

    我有一个 Pandas 数据框 如下所示 ID VALUE A Today A Yesterday B Tomorrow C Tomorrow D Today D Tomorrow E Today
  • 获取 XML 文档注释

  • 如何收听N个频道? (动态选择语句)

    要开始执行两个 goroutine 的无限循环 我可以使用下面的代码 收到消息后 它将启动一个新的 goroutine 并永远持续下去 c1 make chan string c2 make chan string go DoStuff c
  • Schema.org 在一页上设置多个事件

    是否有一种正确的方法可以在 Schema org 的一个页面上显示多个事件 理想情况下 我们不希望每个事件都有一个页面 这是我们想要的示例结构 div div h2 Chili Cookoff h2 div div h3 span Manh
  • 如何将 knockout.js 与 ASP.NET MVC ViewModel 结合使用?

    Bounty 已经有一段时间了 我仍然有几个悬而未决的问题 我希望通过增加赏金也许这些问题能够得到解答 如何将 html 助手与 knockout js 一起使用 为什么需要准备好文档才能使其正常工作 有关更多信息 请参阅第一次编辑 如果我
  • 使用 prolog 解决 Caliban 问题

    我正在努力使用学校的序言来解决逻辑难题 线索如下 布朗 克拉克 琼斯和史密斯是四位为他们的人民服务的重要公民 作为建筑师 银行家 医生和律师的社区 尽管不一定 分别 布朗比琼斯更保守 但比史密斯更自由 比比他年轻的人打高尔夫球更好 并且拥有
  • 通过重叠两个数据框,为每个组/id 创建子图

    我有以下两个数据框 Load the required libraries import pandas as pd import matplotlib pyplot as plt Create dataset 1 data set 1 id
  • 使用 Python 处理 XLSX 中的图像

    我有一个 xlsx 有两张表 一张在 G1 O25 中有一些数据 我们称之为 数据 一张在 G1 O25 的单元格中插入了一些图像 我们称之为 图像 我的目标是使用 Python 通过图像过滤数据 我想要一个弹出窗口 显示单元格 G1 中的
  • 在对象中声明函数名,为什么? [复制]

    这个问题在这里已经有答案了 正在研究一些 js 代码性能并看到了这种方法 window sample foo function foo a b code goes here bar function bar a b code goes he
  • support-library-v4 的依赖问题

    我想在 Eclipse 中导入 2 个现有项目作为库 这两个库项目都依赖于support library v4并有一个 jar 文件 因此 当我导入它们时 系统会要求我修复依赖项 我收到此错误 Jar mismatch Fix your d
  • 在类似 C 的语言中,空格是否被视为标记?

    空格是否被视为 C 类语言中的一种标记 尤其对 C 感兴趣 K R 中的参考手册对此似乎有点含糊 不 空格不会被视为令牌 从http c0x coding guidelines com 6 4 html 标准文本草案 不幸的是实际标准需要花
  • Fortran语言中的多态性

    我有一个类似的代码 Module C sys use class A implicit none Private Type public C sys type private logical Ao set false type A Ao C
  • 如何从用户控件处理页面事件? (VB.net)

    我希望在用户控件生命周期的 预加载 阶段执行一些代码 但是预加载事件仅适用于 Page 对象 因此 我将以下方法添加到我的用户控件中 Private Sub Page PreLoad ByVal sender As Object ByVal
  • 角度平移即时方法不起作用

    我们有一个带有角度翻译的网站 它工作完美 我们有一个变量 我们想用某种语言键来固定它 假设网站的语言有 en 和 zh 作为选项 我希望无论语言选择如何 某个翻译都以 zh 返回 通过浏览API参考 我找到了一种名为 Instant 的方法
  • C++ 宏乘法是怎么回事

    define MAX 265 std cout lt lt 0 MAX lt lt std endl to my surprise the output is 9 rather than 0 这个 C 宏乘法有什么问题 EDIT 以下是完整
  • 使用 ElementTree 解析具有特殊字符的 XML

    我尝试使用 GET 服务进行解析ElementTree 其内容我不控制 包含非 UTF8 特殊字符 respXML response content decode utf 8 respRoot ET fromstring respXML 第