使用Python BBCode库的simple formatter无预期输出,调用方式是否正确?
问题分析与解决
你的add_simple_formatter调用方式本身是正确的,但问题出在多余的正则提取操作上——你先用正则把[p]和[/p]之间的文本单独拎了出来,导致传给parser.format()的内容里根本没有[p]标签,解析器找不到需要处理的BBCode标记,自然只会返回原文本。
正确代码示例
import bbcode # 初始化解析器并添加p标签的格式化规则 parser = bbcode.Parser() parser.add_simple_formatter('p', '<p>%(value)s</p>') text = '[p]I am a text example[/p]' # 直接传入完整的带BBCode标签的文本,不需要提前提取内容 html = parser.format(text) print(html)
为什么这样能行?
add_simple_formatter的作用是告诉解析器:当遇到[p]和[/p]包裹的内容时,用你定义的模板<p>%(value)s</p>去替换它。所以必须让解析器看到完整的[p]...[/p]结构,它才能触发对应的格式化逻辑。你之前提前剥离了标签,相当于让解析器处理一段普通文本,当然不会产生你想要的结果。
内容的提问来源于stack exchange,提问作者Van Jake
相关产品推荐
相关产品推荐

