为网页格式化Python代码

问题描述 投票:4回答:2

直到最近,我在blogspot.com上发布Python代码 (whitespace matters),使用的是这样的方式。

<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;

标准的答案(比如在SO上)是通过使用css(我对css了解不多)来实现语法着色或高亮,比如在之前的SO问题中讨论过的那样 此处. 我遇到的问题是,所有这些解决方案都需要从网络上的服务器加载资源。 但是如果(比如说5年后)这个资源消失了,html版本的代码就根本无法呈现。 如果我懂Javascript,我想我大概可以解决这个问题。

着色的问题本身是微不足道的,它可以通过使用 <style> 标签的各种定义。 但是解析是很难的,至少我自己尝试解析Python没有什么进展。 多行字符串是一个特别痛苦的问题。 我可以不理会那些难解的情况,只写简单的代码。

TextMate有一个命令 Create HTML from Document. 结果相当啰嗦,但可以直接粘贴到帖子里。 但如果说你有3段代码,那么就有1000行左右。 当然这也是一个文档,所以你必须在粘贴前实际剪切。

有没有一个简单的Python解析器? 有更好的解决方案吗?

更新:我自己写了一个语法高亮的解析器。 也许还是有点bug,但它很简单,是一个自成一体的解决方案。 我把它贴出来了 此处. Pygments也是一个不错的选择。

python html css
2个回答
3
投票

你为什么不使用 侏儒?


1
投票

对我有用的是用 润色. 在HTML的顶部,添加以下一行内容

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

来自动运行prettify。然后使用

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

在你的HTML中。

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

© www.soinside.com 2019 - 2024. All rights reserved.