轉自:https://www.cnblogs.com/BlackStorm/p/6359005.html
處理方法 str.replace(u'\xa0', u' ')
最近用 scrapy 爬某網站,發現拿到的內容里面含有 \xa0 、 \u3000 這樣的字符,起初還以為是編碼不對,搜了一下才知道是見識太少 233 。
\xa0 是不間斷空白符
我們通常所用的空格是 \x20 ,是在標准ASCII可見字符 0x20~0x7e 范圍內。
而 \xa0 屬於 latin1 (ISO/IEC_8859-1)中的擴展字符集字符,代表空白符nbsp(non-breaking space)。
latin1 字符集向下兼容 ASCII ( 0x20~0x7e )。通常我們見到的字符多數是 latin1 的,比如在 MySQL 數據庫中。
這里也有一張簡陋的Latin1字符集對照表。
\u3000 是全角的空白符
根據Unicode編碼標准及其基本多語言面的定義, \u3000 屬於CJK字符的CJK標點符號區塊內,是空白字符之一。它的名字是 Ideographic Space ,有人譯作表意字空格、象形字空格等。顧名思義,就是全角的 CJK 空格。它跟 nbsp 不一樣,是可以被換行間斷的。常用於制造縮進, wiki 還說用於抬頭,但沒見過。
這里還有一個 Unicode.org 上關於 CJK 標點符號塊的字符代碼表。
轉自https://www.cnblogs.com/my8100/p/7709371.html
HTML轉義字符&npsp;表示non-breaking space,unicode編碼為u'\xa0',超出gbk編碼范圍?
0.目錄
1.參考
2.問題定位
不間斷空格的unicode表示為 u\xa0',超出gbk編碼范圍?
3.如何處理
.extract_first().replace(u'\xa0', u' ').strip().encode('utf-8','replace')
1.參考
Beautiful Soup and Unicode Problems
詳細解釋
unicodedata.normalize('NFKD',string) 實際作用???
Scrapy : Select tag with non-breaking space with xpath
>>> selector.xpath(u'''
... //p[normalize-space()]
... [not(contains(normalize-space(), "\u00a0"))]
normalize-space() 實際作用???
In [244]: sel.css('.content') Out[244]: [<Selector xpath=u"descendant-or-self::*[@class and contains(concat(' ', normalize-space(@class), ' '), ' content ')]" data=u'<p class="content text-
s.replace(u
'\xa0'
, u'
').encode('
utf
-
8
')
2.問題定位
https://en.wikipedia.org/wiki/Comparison_of_text_editors
定位元素顯示為 &npsp;