转自: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
- 参考
- 问题定位
不间断空格的 unicode 表示为 u\xa0’, 超出 gbk 编码范围? - 如何处理
.extract_first().replace(u’\xa0’, u’ ‘).strip().encode(‘utf-8’,’replace’)
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``')
https://en.wikipedia.org/wiki/Comparison_of_text_editors
定位元素显示为 &npsp;