转自: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

  1. 参考
  2. 问题定位
    不间断空格的 unicode 表示为 u\xa0’, 超出 gbk 编码范围?
  3. 如何处理
    .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

  1. >>> selector.xpath(u'''
  2. ... //p[normalize-space()]
  3. ... [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-

BeautifulSoup 下 Unicode 乱码解决

s.replace(u``'\xa0'``, u'``').encode('``utf``-``8``')

https://en.wikipedia.org/wiki/Comparison_of_text_editors

定位元素显示为 &npsp;

【Python 爬虫】爬虫爬取内容时, \xa0 、 \u3000 的含义与处理方法_thewindkee的博客-程序员宝宝 - 程序员宝宝 - 图1
https://cxybb.com/article/thewindkee/79890207