<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    8.7. 給屬性值加引號

                    comp.lang.python 上的一個常見問題是 “我有一些 HTML 文檔,屬性值沒有用引號括起來,并且我想將它們全部括起來,我怎么才能實現它呢?[7] (一般這種事情的出現是由于一個項目經理加入到一個大的項目中來,而他又抱著 HTML 是一種標記語言的教條,要求所有的頁面必須能夠通過 HTML 校驗器的驗證。而屬性值沒有被引號括起來是一種常見的對 HTML 規范的違反。) 不管什么原因,未括起來的屬性值通過將 HTML 送進 BaseHTMLProcessor 可以容易地修復。

                    BaseHTMLProcessor 消費 (consume) HTML (因為它是從 SGMLParser 派生來的) 并生成等價的 HTML。但是這個 HTML 輸出與輸入的并不一樣。標記和屬性名最終會轉化為小寫字母,即使它們可能以大寫字母開始或是大小寫的混合形式。屬性值將被雙引號引起來,即使它們原來可能是用單引號括起來的或根本沒有括起來。這就是最后我們可以受益的邊際效應。

                    例 8.16. 給屬性值加引號

                    >>> htmlSource = """        1
                    ...     <html>
                    ...     <head>
                    ...     <title>Test page</title>
                    ...     </head>
                    ...     <body>
                    ...     <ul>
                    ...     <li><a href=index.html>Home</a></li>
                    ...     <li><a href=toc.html>Table of contents</a></li>
                    ...     <li><a href=history.html>Revision history</a></li>
                    ...     </body>
                    ...     </html>
                    ...     """
                    >>> from BaseHTMLProcessor import BaseHTMLProcessor
                    >>> parser = BaseHTMLProcessor()
                    >>> parser.feed(htmlSource) 2
                    >>> print parser.output()   3
                    <html>
                    <head>
                    <title>Test page</title>
                    </head>
                    <body>
                    <ul>
                    <li><a href="index.html">Home</a></li>
                    <li><a href="toc.html">Table of contents</a></li>
                    <li><a href="history.html">Revision history</a></li>
                    </body>
                    </html>
                    1 請注意,在 <a> 標記中的 href 屬性值沒有被適當地括起來 (還要注意,除了文檔字符串之外,我們還將三重引號用到了 doc string 之外的其它地方,并且是不會少于直接在 IDE 中的使用。它們非常有用。)
                    2 裝填分析器。
                    3 使用定義在 BaseHTMLProcessor 中的 output 函數,我們得到單個字符串的輸出,并且屬性值被完全括起來了。讓我們想一下這里實際上發生了多少事:SGMLParser 分析整個 HTML 文檔,將其分解為一片片的標記、引用、數據等等。BaseHTMLProcessor 使用這些元素來重新構造 HTML 的片段 (如果您想查看的話它們仍然保存在 parser.pieces 中) 。最后,我們調用 parser.output,它將所有的 HTML 片段連接成一個字符串。

                    Footnotes

                    [7] 好吧,其實并不是那么普通的一個問題。在那不都是問 “我應該用何種編輯器來寫 Python 代碼?” (回答:Emacs) 或 “PythonPerl 是好還是壞?” (回答:“PerlPython 差,因為人們想讓它差的。” ――Larry Wall,1998 年 10 月 14 日) 但是關于 HTML 處理的問題,或者這種提法或者另一種提法,大約一個月就要出現一次,在這些問題之中,這個問題是最常見的一個。

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频