当前位置: 首页 > news >正文

python与html结合_Python在字符串中处理html和xml的方法

问题

你想将HTML或者XML实体如 &entity; 或 code; 替换为对应的文本。 再者,你需要转换文本中特定的字符(比如<, >, 或 &)。

解决方案

如果你想替换文本html">字符串中的 ‘<' 或者 ‘>' ,使用 html.escape() 函数可以很容易的完成。比如:

1

2

3

4

5

6

7

8

9

10

11

>>> s= 'Elements are written as "text".'

>>>import html

>>>print(s)

Elements are written as"text".

>>>print(html.escape(s))

Elements are written as "<tag>text</tag>".

>>># Disable escaping of quotes

>>>print(html.escape(s, quote=False))

Elements are written as"<tag>text</tag>".

>>>

如果你正在处理的是ASCII文本,并且想将非ASCII文本对应的编码实体嵌入进去, 可以给某些I/O函数传递参数 errors='xmlcharrefreplace' 来达到这个目。比如:

1

2

3

4

>>> s= 'Spicy Jalapeño'

>>> s.encode('ascii', errors='xmlcharrefreplace')

b'Spicy Jalapeño'

>>>

为了替换文本中的编码实体,你需要使用另外一种方法。 如果你正在处理HTML或者XML文本,试着先使用一个合适的HTML或者XML解析器。 通常情况下,这些工具会自动替换这些编码值,你无需担心。

有时候,如果你接收到了一些含有编码值的原始文本,需要手动去做替换, 通常你只需要使用HTML或者XML解析器的一些相关工具函数/方法即可。比如:

1

2

3

4

5

6

7

8

9

10

11

>>> s= 'Spicy "Jalapeño&quot.'

>>>from html.parserimport HTMLParser

>>> p= HTMLParser()

>>> p.unescape(s)

'Spicy "Jalapeño".'

>>>

>>> t= 'The prompt is >>>'

>>>from xml.sax.saxutilsimport unescape

>>> unescape(t)

'The prompt is >>>'

>>>

讨论

在生成HTML或者XML文本的时候,如果正确的转换特殊标记字符是一个很容易被忽视的细节。 特别是当你使用 print()函数或者其他字符串格式化来产生输出的时候。 使用像 html.escape() 的工具函数可以很容易的解决这类问题。

如果你想以其他方式处理文本,还有一些其他的工具函数比如 xml.sax.saxutils.unescapge()可以帮助你。 然而,你应该先调研清楚怎样使用一个合适的解析器。 比如,如果你在处理HTML或XML文本, 使用某个解析模块比如 html.parse或 xml.etree.ElementTree 已经帮你自动处理了相关的替换细节。

以上就是Python在字符串中处理html和xml的方法的详细内容,更多关于Python在字符串中处理html和xml的资料请关注服务器之家其它相关文章!

原文链接:https://python3-cookbook.readthedocs.io/zh_CN/latest/c02/p17_handle_html_xml_in_text.html

相关文章:

  • 怎么下载安装python_【转】如何下载安装python
  • eclipse maven打包jar_Maven 异常信息:jar包缺失或损坏,导致编译、打包错误
  • python indexerror_Python 未超索引情况下 显示 IndexError
  • calendar round_java实战项目常用类,Date、Calendar、BigDecimal、Math、UUID
  • 新代系统plc梯形图说明书_PLC现场实例电气原理图及编程
  • python注释是什么意思_python注释是什么意思
  • 如何和后台接触的_民熔小课堂|跌落式熔断器该如何检修?点进来告诉你答案!...
  • python rgb库_Python实现RGB与HSI颜色空间的互换方式
  • python删除对象引用_Python:删除自引用对象
  • 如何使用python脚本下载git代码_如何使用python代码操作git代码
  • es数据迁移_MySQL用得好好的,为什么要转ES?
  • python变量通过变量名访问_python – 将变量作为模块中的字符串进行访问
  • h5游戏开发_从WEB前端角度看H5游戏开发
  • 技嘉主板万能网卡驱动_intel i5-10600K搭配技嘉B460M AORUS PRO 主板 性能表现如何
  • ssl 接收到一个超出最大准许长度的记录_数据结构和算法入门之求滑动窗口最大值(Sliding Window Maximum)...
  • [NodeJS] 关于Buffer
  • angular2 简述
  • flask接收请求并推入栈
  • git 常用命令
  • Golang-长连接-状态推送
  • input的行数自动增减
  • iOS编译提示和导航提示
  • JavaScript的使用你知道几种?(上)
  • JavaWeb(学习笔记二)
  • JS题目及答案整理
  • React组件设计模式(一)
  • ubuntu 下nginx安装 并支持https协议
  • 笨办法学C 练习34:动态数组
  • 从setTimeout-setInterval看JS线程
  • 配置 PM2 实现代码自动发布
  • 前端设计模式
  • 世界上最简单的无等待算法(getAndIncrement)
  • 我看到的前端
  • 线性表及其算法(java实现)
  • 小程序button引导用户授权
  • 学习ES6 变量的解构赋值
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #HarmonyOS:基础语法
  • #ifdef 的技巧用法
  • #QT(串口助手-界面)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (31)对象的克隆
  • (k8s中)docker netty OOM问题记录
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (四)Android布局类型(线性布局LinearLayout)
  • (五)MySQL的备份及恢复
  • (原)Matlab的svmtrain和svmclassify
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (正则)提取页面里的img标签
  • (转载)CentOS查看系统信息|CentOS查看命令
  • . Flume面试题
  • .net core 6 redis操作类
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .NET 的程序集加载上下文
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖