今天使用python处理一个txt文件的时候,遇到几个特殊字符:\ufeff、\xa0、\u3000,记录一下处理方法

代码:
with open(file_path, mode='r') as f:
s = f.read()

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' ')

ps:关于 \ufeff 的一些资料(引自维基百科):

字节顺序标记(英语:byte-order mark,BOM)是位于码点U+FEFF的统一码字符的名称。当以UTF-16或UTF-32来将UCS/统一码字符所组成的字符串编码时,这个字符被用来标示其字节序。它常被用来当做标示文件是以UTF-8、UTF-16或UTF-32编码的记号。

字符U+FEFF如果出现在字节流的开头,则用来标识该字节流的字节序,是高位在前还是低位在前。如果它出现在字节流的中间,则表达零宽度非换行空格的意义,用户看起来就是一个空格。从Unicode3.2开始,U+FEFF只能出现在字节流的开头,只能用于标识字节序,就如它的名称——字节序标记——所表示的一样;除此以外的用法已被舍弃。取而代之的是,使用U+2060来表达零宽度无断空白。

在UTF-16中,字节顺序标记被放置为文件或字符串流的第一个字符,以标示在此文件或字符串流中,以所有十六比特为单位的字码的尾序(字节顺序)。

如果十六比特单位被表示成大尾序,这字节顺序标记字符在序列中将呈现0xFE,其后跟着0xFF(其中的0x用来标示十六进制)。
如果十六比特单位使用小尾序,这个字节序列为0xFF,其后接着0xFE。
而统一码中,值为U+FFFE的码位被保证将不会被指定成一个统一码字符。这意味着0xFF、0xFE将只能被解释成小尾序中的U+FEFF(因为不可能是大尾序中的U+FFFE)。

UTF-8则没有字节顺序的议题。UTF-8编码过的字节顺序标记则被用来标示它是UTF-8的文件。它只用来标示一个UTF-8的文件,而不用来说明字节顺序。[1]许多视窗程序(包含记事本)会添加字节顺序标记到UTF-8文件。然而,在类Unix系统(大量使用文本文件,用于文件格式,用于进程间通信)中,这种做法则不被建议采用。因为它会妨碍到如解译器脚本开头的Shebang等的一些重要的码的正确处理。它亦会影响到无法识别它的编程语言。如gcc会报告源码档开头有无法识别的字符。而在PHP中,如果没有激活输出缓冲(output buffering),它会使得页面内容开始被送往浏览器(即:用户头文件已被提交),这使PHP脚本无法指定用户头文件(HTTP Header)。字节顺序标记在UTF-8中被表示为序列EF BB BF,对大部分未准备好处理UTF-8的文本编辑器及网页浏览器而言,在ISO-8859-1的环境中则会显示。

虽然字节顺序标记亦可以用于UTF-32,但这个编码很少用于传输,其规则如同UTF-16。对于已于IANA注册的字符集UTF-16BE、UTF-16LE、UTF-32BE和UTF-32LE等来说,不可使用字节顺序标记。文档开头的U+FEFF会被解释成一个(已舍弃的)"零宽度无断空白",因为这些字符集的名字已决定了其字节顺序。对于已注册字符集UTF-16和UTF-32来说,一个开头的U+FEFF则用来表示字节顺序。

done!

python去除\ufeff、\xa0、\u3000相关推荐

  1. Python去除特殊字符\xa0、u'\xe4等

    有时我们会碰到类似下面这样的 unicode 字符串: u'\xe4\xbd\xa0\xe5\xa5\xbd' 这明显不是一个正确的 unicode 字符串,可能是在哪个地方转码转错了. 我们要想得到 ...

  2. 【爬虫笔记】关于 \u200b \xa0 \u3000等特殊字符

    在进行网页爬虫分析时,遇到了一些特殊字符,通过网络搜索找到了解决方法,所以利用这篇博文将遇到的问题以及解决方法记录下来,方便回顾,也希望这篇博文能够帮助到大家. \u200b \xa0 \u3000等 ...

  3. Python去除不可见字符,如\u200b

    文章目录 问题描述 解决方案 其他 参考文献 问题描述 爬虫时遇到不可见字符时无法导入数据库中,报错 mysql.connector.errors.DatabaseError: 1267 (HY000 ...

  4. 用Python去除扫描型PDF中的水印

    内容概述 含水印扫描型PDF文件,其中某页如下图所示,用Python去除其页顶及页底的水印. 处理思路:PDF中的每一页的水印的相对位置基本相同,将PDF每一页输出成图片,然后进行图片编辑,用白色填充 ...

  5. python去除php、java、js、html、vue等类型注释字符方法实例

    本篇文章主要讲解:python去除php.java.js.html.vue等所类型注释字符方法实例 作者:任聪聪 可以处理php.java.python.js.html.vue.node.mysql等 ...

  6. python运行界面黑色_selenium+python 去除启动的黑色cmd窗口方法

    其实 selenium启动窗口的时候就是 使用了subprocess.Popen 启动的驱动程序的,只要在启动的时候加上启动不显示窗口的参数即可. 下面魔改开始O(∩_∩)O哈哈~ 修改代码 位于D: ...

  7. python黑色背景白色背景_用Python去除图像的黑色或白色背景实例

    用Python去除背景,得到有效的图像 此目的是为了放入深度学习计算中来减少计算量,同时突出特征,原图像为下图,命名为1.jpg,在此去除白色背景,黑色背景同理 需要对原图像进行的处理是去掉白色背景, ...

  8. python去除字符串中表情字符

    python去除字符串中表情字符 用mysql存储数据时,"charset=utf8"默认状态下text字段不支持4字节的字符,而表情字符为4字节,如果表情字符非所需数据时可以将其 ...

  9. python去除空行_python中去掉空行的问题

    在python中处理空行时,经常会遇到一些问题.现总结经验如下: 1.遇到的空行如果只有换行符,直接使用=='\n'或者 len(line)==line.count('\n') 2.有多个空格+换行符 ...

  10. 用Python去除图像的黑色或白色背景

    用Python去除背景,得到有效的图像 此目的是为了放入深度学习计算中来减少计算量,同时突出特征,原图像为下图,命名为1.jpg,在此去除白色背景,黑色背景同理 需要对原图像进行的处理是去掉白色背景, ...

最新文章

  1. 我是如何一步步让公司的MySQL支撑亿级流量的?
  2. hdu5446(2015长春网络赛J题)
  3. 如何帮助金融客户“用好云”?
  4. Java-自增自减运算符 初始Math类
  5. python绘制正方形、利用turlr_《像计算机科学家一样思考Python》学习笔记(四)...
  6. linux cvs账户,在linux下为cvs创建用户
  7. 【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)
  8. 苹果智能拨号软件_iPhone智能性升级 多功能通话辅助软件
  9. HAUT 1285: 军团再临【并查集*逆向思维】
  10. 微软简体和繁体字体转换
  11. 好的计算机书籍 http://outmyth.blogdriver.com/outmyth/1122212.html
  12. 能领取拼多多优惠券的微信小程序
  13. c++逆天改命进阶--哈希表
  14. 王者荣耀官网制作心得
  15. Python安装第三方库出现失败并出现”Cannot find existing Pyqt5 plugin directories”的解决方案
  16. HPE服务器使用ILO5安装系统
  17. “ ipconfig 不是内部或者外部命令,也不是可运行的程序”问题的解决
  18. Linux下常用的编辑文件与保存命令
  19. python教程怎么读,python是什么意思?怎么读?-Python教程
  20. 02 GitHub的基本使用与踩坑-从零创建项目,第一次的各种提示报错,一铲子填平!

热门文章

  1. ES6学习笔记(对象)
  2. PTA-1015——Reversible Primes
  3. ubuntu 12.04 server + OPENACS(TR069)安装配置日记
  4. centos6.5解决方案-1
  5. javaScript面试题大全
  6. C语言函数指针简单应用
  7. 【Android】proguard混淆代码
  8. Table控件布局DataList模板
  9. DAY 34 进程通信、消费者模型和线程
  10. Struts2学习第4天--拦截器