2014-05-01 42 views
1

我有一個生成一些HTML的Python腳本。它使用the Python markdown library。我想將最初的Markdown文本粘貼在HTML末尾的註釋中,在那裏它偶爾會用於調試目的。我試過在HTML結束之後放置Markdown文本,但它對我來說不起作用(Firefox)。所以我認爲這種工作方式是我運行Markdown,然後在HTML之後簡單地追加標記爲註釋的Markdown源代碼。但是,HTML顯然對於評論允許的內容有點挑剔。該網站htmlhelp.com給經過一些討論如下建議:將文本轉換爲Python中的HTML註釋

爲此,使用以下簡單的規則來撰寫有效並接受[便攜]評論:
一個HTML註釋以「」,不在評論的任何地方都包含「 - 」或「>」。
(source)

所以看起來我需要做一些轉義或東西,讓我幫降價文本成一種形式,HTML會接受這樣的評論。有沒有現成的工具可以幫助我做到這一點?

回答

3

按照w3

Comments consist of the following parts, in exactly the following order: 

- the comment start delimiter "<!--" 
- text 
- the comment end delimiter "-->" 

The text part of comments has the following restrictions: 

1. must not start with a ">" character 
2. must not start with the string "->" 
3. must not contain the string "--" 
4. must not end with a "-" character 

這些都是很簡單的規則。你可以正則執行它們,但它們非常簡單,你甚至不需要!

4個條件中的3個可以用級聯來滿足,另一個用簡單的replace()總而言之,這是一個班輪

def html_comment(text): 
    return '<!-- ' + text.replace('--', '- - ') + ' -->' 

注意的空間。

+0

不是第一次我發佈的問題的解決方案非常簡單。有一些奇怪的情況,比如'---'。replace(' - ',' - - ')==' - - ''你的代碼不能很好地處理我想要的東西(還有兩個連字符('''','>')+' - ' - ' - '+' - ' - ') >''而不是 – kuzzooroo

+0

所以最後它並不是那麼簡單:)我會更新答案以反映你的改變。如果這是您最終使用的內容,請考慮將其標記爲已接受,以便未來的讀者獲益 – slezica

1

難道你只是.replace嗎?最終,你可以用代替任何東西,但用換碼代替可能不會使你的評論更容易被讀取,而不會取代任何東西。

commented = '<!-- %s -->' % markdown_text.replace('--', '').replace('>', '')