python去除BOM头ufeff等特殊字符

1.ufeff 字节顺序标记

去掉ufeff,只需改一下编码就行,把UTF-8编码改成UTF-8-sig
with open(file_path, mode='r', encoding='UTF-8-sig') as f:
s = f.read()

2.xa0 是不间断空白符

xa0 是不间断空白符  
我们通常所用的空格是 x20 ,是在标准ASCII可见字符 0x20~0x7e 范围内。
而 xa0 属于 latin1 (ISO/IEC_8859-1)中的扩展字符集字符,代表空白符nbsp(non-breaking space)。
latin1 字符集向下兼容 ASCII ( 0x20~0x7e )。通常我们见到的字符多数是 latin1 的,比如在 MySQL 数据库中。

去除xa0
str.replace(u'xa0', u' ')

3.u3000 是全角的空白符 
根据Unicode编码标准及其基本多语言面的定义, u3000 属于CJK字符的CJK标点符号区块内,是空白字符之一。它的名字是 Ideographic Space ,有人译作表意字空格、象形字空格等。顾名思义,就是全角的 CJK 空格。它跟 nbsp 不一样,是可以被换行间断的。常用于制造缩进, wiki 还说用于抬头,但没见过。

去除u3000
str.replace(u'u3000',u' ')
去除空格和xa0、u3000
title.strip().replace(u'u3000', u' ').replace(u'xa0', u' ')

原文地址:https://www.cnblogs.com/linn/p/11452830.html