为网页格式化Python代码

9 投票
2 回答
8510 浏览
提问于 2025-04-17 00:01

直到最近,我在blogspot.com上发布Python代码(空格很重要)时,使用的方式大概是这样的:

<div style="overflow-x: scroll "> 
<table bgcolor="#ffffb0" border="0" width="100%" padding="4"> 
<tbody><tr><td><pre style=" hidden;font-family:monaco;"> 
my code here 
</pre></table></div> 

大约一周前,我发现我的帖子开始多出一些空行,结果所有的内容都是双倍行距。用简单的<pre>标签就不行了(除了失去颜色),因为它也会导致双倍空行,而<code>标签又会搞乱空格。我想我可以加上&nbsp;*4——但这在HTML风格上是被不太赞成的。

对此的标准答案(就像在这里的SO上)是通过使用CSS来实现语法高亮(我对CSS不太了解),例如在之前的SO问题中讨论的 这里。我对这个的困扰是,所有这样的解决方案都需要从网上的服务器加载资源。但是如果(比如说五年后)那个资源不见了,代码的HTML版本就完全无法显示了。如果我懂JavaScript,我想我可能能解决这个问题。

至于颜色的问题其实很简单,可以通过使用<style>标签和各种定义来解决。但解析代码就比较难了;至少我在尝试解析Python时没有取得太大进展。多行字符串特别麻烦。我可以选择忽略那些复杂的情况,只处理简单的。

TextMate有一个命令叫Create HTML from Document。结果虽然内容比较多,但可以直接粘贴到帖子里。但是如果你有3段代码,那可能就得处理1000行左右的内容。而且这还是个文档,所以你得先剪切再粘贴。

有没有简单的Python解析器?更好的解决方案呢?

更新:我写了自己的语法高亮解析器。可能还有点小bug,但它非常简单,是个独立的解决方案。我把它发布在了 这里。Pygments也是个不错的选择。

2 个回答

3

对我有效的方法是使用prettify。在HTML的顶部,添加以下代码行

<script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script>

这样就可以自动运行prettify了。然后在你的HTML中使用

<code class="prettify">
... enter your code here ...
</code>

我实际上是在blogspot.com上使用了这段代码;这里有一个示例

5

你为什么不使用 pygments 呢?

撰写回答