【问题标题】:Formatting Python code for the web为网络格式化 Python 代码
【发布时间】:2011-10-31 09:03:06
【问题描述】:

直到最近,我使用以下方式将 Python 代码(空格很重要)发布到 blogspot.com:

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

大约一周前,这些帖子开始获得额外的换行符,因此所有这些都是双倍行距的。使用简单的&lt;pre&gt; 标签是不好的(除了失去颜色)b/c 它还会导致双换行符,而&lt;code&gt; 标签与空格混淆。我想我可以添加 &amp;nbsp;*4 --- 但这是 HTML 风格之神不赞成的。

对此的标准答案(就像在 SO 上一样)是通过使用 css 获得语法着色或突出显示(我不太了解),例如在之前的 SO 问题 here 中讨论过.我遇到的问题是所有此类解决方案都需要从网络上的服务器加载资源。但是,如果(比如 5 年后)该资源消失了,则代码的 html 版本将根本不会呈现。如果我知道 Javascript,我想我可能会解决这个问题。

着色问题本身是微不足道的,可以通过使用具有各种定义的&lt;style&gt;标签来解决。但是解析很难;至少我在尝试自己解析 Python 方面没有取得太大进展。多行字符串是一种特别的痛苦。我可以忽略困难的情况并编写简单的代码。

TextMate 有一个命令Create HTML from Document。结果相当罗嗦,但可以粘贴到帖子中。但是如果你有 3 个代码段,那么它就像 1000 行之类的。当然它是一个文档,所以你必须在粘贴之前实际剪切。

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

更新:我编写了自己的语法高亮解析器。可能还是有点问题,但它非常简单且是一个独立的解决方案。我发布了它here。 Pygments 也是一个不错的选择。

【问题讨论】:

    标签: python html css


    【解决方案1】:

    你为什么不用pygments

    【讨论】:

    • 这看起来就是这样。不幸的是,它不起作用(至少开箱即用),从命令行:pygmentize -f html /path/to/file.py
    • 看起来这应该完全按照问题指定的方式进行解析等。我只需要弄清楚如何使用它。谢谢。
    • @telliott99 我刚刚尝试了您粘贴的确切命令,它对我有用。也许你有一个损坏的 pygments 安装。
    • 它工作正常。我只是不明白需要什么:pygmentize -f html -O full -o test.html test.py 给出了整个 html 文档。
    • 啊。作为 html 文档看起来不错,但博主仍然添加了双换行符。
    【解决方案2】:

    对我有用的是使用prettify。在 HTML 的顶部,添加行

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

    自动运行美化。然后使用

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

    在您的 HTML 中。

    我实际上在 blogspot.com 上使用了这段代码;这是example

    【讨论】:

    • 你博客上的代码看起来不像美化了。
    猜你喜欢
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多