<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 問題 你正在處理Unicode字符串,需要確保所有字符串在底層有相同的表示。 ## 解決方案 在Unicode中,某些字符能夠用多個合法的編碼表示。為了說明,考慮下面的這個例子: >>> s1 = 'Spicy Jalape\u00f1o' >>> s2 = 'Spicy Jalapen\u0303o' >>> s1 'Spicy Jalape?o' >>> s2 'Spicy Jalape?o' >>> s1 == s2 False >>> len(s1) 14 >>> len(s2) 15 >>> 這里的文本”Spicy Jalape?o”使用了兩種形式來表示。第一種使用整體字符”?”(U+00F1),第二種使用拉丁字母”n”后面跟一個”~”的組合字符(U+0303)。 在需要比較字符串的程序中使用字符的多種表示會產生問題。為了修正這個問題,你可以使用unicodedata模塊先將文本標準化: >>> import unicodedata >>> t1 = unicodedata.normalize('NFC', s1) >>> t2 = unicodedata.normalize('NFC', s2) >>> t1 == t2 True >>> print(ascii(t1)) 'Spicy Jalape\xf1o' >>> t3 = unicodedata.normalize('NFD', s1) >>> t4 = unicodedata.normalize('NFD', s2) >>> t3 == t4 True >>> print(ascii(t3)) 'Spicy Jalapen\u0303o' >>> `normalize()` 第一個參數指定字符串標準化的方式。NFC表示字符應該是整體組成(比如可能的話就使用單一編碼),而NFD表示字符應該分解為多個組合字符表示。 Python同樣支持擴展的標準化形式NFKC和NFKD,它們在處理某些字符的時候增加了額外的兼容特性。比如: >>> s = '\ufb01' # A single character >>> s '?' >>> unicodedata.normalize('NFD', s) '?' # Notice how the combined letters are broken apart here >>> unicodedata.normalize('NFKD', s) 'fi' >>> unicodedata.normalize('NFKC', s) 'fi' >>> ## 討論 標準化對于任何需要以一致的方式處理Unicode文本的程序都是非常重要的。當處理來自用戶輸入的字符串而你很難去控制編碼的時候尤其如此。 在清理和過濾文本的時候字符的標準化也是很重要的。比如,假設你想清除掉一些文本上面的變音符的時候(可能是為了搜索和匹配): >>> t1 = unicodedata.normalize('NFD', s1) >>> ''.join(c for c in t1 if not unicodedata.combining(c)) 'Spicy Jalapeno' >>> 最后一個例子展示了 `unicodedata` 模塊的另一個重要方面,也就是測試字符類的工具函數。`combining()` 函數可以測試一個字符是否為和音字符。在這個模塊中還有其他函數用于查找字符類別,測試是否為數字字符等等。 Unicode顯然是一個很大的主題。如果想更深入的了解關于標準化方面的信息,請看考 [Unicode官網中關于這部分的說明](http://www.unicode.org/faq/normalization.html) [http://www.unicode.org/faq/normalization.html]Ned Batchelder在 [他的網站](http://nedbatchelder.com/text/unipain.html) [http://nedbatchelder.com/text/unipain.html]上對Python的Unicode處理問題也有一個很好的介紹。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看