【技术研究】html转格式化的纯文本

本文探讨了如何将HTML转换为保留格式的纯文本,包括使用BeautifulSoup.getText()、html2text、pandoc、selectolax和PyQt5.QTextEdit的方法,并指出它们的不足。最终,作者选择自定义Python代码来支持有限的HTML标签,如<h1>、<p>、<ol>、<ul>、<li>和<span>,以实现所需效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题及说明

  1. 将一段html语言描述的文本,转换为保留一定格式的纯文本字符。
    保留缩进、序号等。
  2. 该效果为自定义代码实现。
  3. 实现代码语言为python。

html表示效果图如下:
在这里插入图片描述
纯文本效果如下:
在这里插入图片描述

调研

在决定自定义实现上述效果前,对现有技术实现调研结果如下:

BeautifulSoup.getText()

依赖库:pip bs4
在这里插入图片描述
对应的html文本为:

<ol><li>这是<span style="color: rgb(225, 60, 57);"><strong>第1段</strong></span>文本需求.</li><li>这是<u><em>第2段</em></u>文本需求。</li></ol>

测试代码:

 	# 1 --------------    p不换行,ol没有序号
    # soup = BeautifulSoup(html_text, 'html.parser')
    soup = BeautifulSoup(html_text, 'html5lib')  # pip html5lib
    # soup = BeautifulSoup(html_text, 'lxml')
	return soup.getText()

处理效果如下:

  • 没有缩进
  • 没有换行
  • 没有序号
这是第1段文本需求.这是第2段文本需求。

html2text

依赖库:pip html2text
代码:

md = html2text.html2text(html_text)

这是html转markdown文本的库。不是转纯文本的。

pandoc

格式相对较好,但是慢。
对于列表缩进效果不理想。

html样例图:
在这里插入图片描述
html文本:

<div>
    <h1>标题1</h1>
    <h2> &nbsp; &nbsp;标题2(缩进1个tab)</h2>
    <p>有序列表:</p>
    <ol>
        <li>第1段</li>
        <li>第2段</li>
    </ol>
    <p> &nbsp; &nbsp;有序<span style="background-color: rgb(54, 207, 201);">列表</span>:(<span
            style="color: rgb(231, 95, 51);">缩进1个tab</span></p>
    <ol>
        <ol>
            <li>第1段</li>
            <li>第2段</li>
        </ol>
    </ol>
    <p>无序列表:</p>
    <ul>
        <li>第一</li>
        <li>第二</li>
    </ul>
    <p> &nbsp; &nbsp;无序列表:(<span style="color: rgb(231, 95, 51);"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值