今天使用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产品作者如何去掉_python去除\ufeff、\xa0、\u3000相关推荐

  1. python字符串补空格输出_Python去除空格,Python中常见字符串去除空格的方法总结...

    今天小编就为大家分享一篇关于Python去除字符串前后空格的几种方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧: Python去除空格方法一: stri ...

  2. python中怎么替换字母_python去除拼音声调字母,替换为字母的方法

    第一种方法 import sys import unicodedata s = "Lǐ Zhōu Wú" remap = { # ord返回ascii值 ord('\t'): '' ...

  3. python把nan值去掉_python – Keras Neural Nets,如何删除输出中的NaN值?

    我一直使用Keras从我的神经网络中获得一些NaN输出.我每10,000个结果只得到一个NaN.最初我有一个relu激活层进入最终的softmax层.这产生了更多的NaN结果.我将构成网络中最后两个密 ...

  4. python删除指定位置的字符串_python去除区域 python删除字符串中指定位置字符

    python删除字符串中指定位置字符 原程序是这样的: ser = serial.Serial("/dev/ttyAMA0", 9600) def main字符串的话,你可以把他当 ...

  5. python作者龟叔_Python基础 — Python简介

    序言:未来是数据的世界,而python 是一门可以高效简洁处理数据的语言,博主打算花一些时间完成python学习的从0到1.以此相关系列博客作为一个记录. 1. Python简介 Python的发音与 ...

  6. python去空格的函数_Python怎么去掉最后的空格

    strip()函数 去空格nrt函数的用法 strip 同时去掉左右两边的空格(推荐学习:Python视频教程) lstrip 去掉左边的空格 rstrip 去掉右边的空格 具体示例如下:>&g ...

  7. python简单体育竞技模拟_python初体验 —— 模拟体育竞技

    python初体验 -->>> 模拟体育竞技 一.排球训练营 1. 简介: 模拟不同的两个队伍进行排球的模拟比赛. 2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ...

  8. python搜索网页特定区域内容_Python爬取练习:指定百度搜索的内容并提取网页的标题内容...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章源于白菜学python ,作者小白菜 刚接触Python的新手.小白,可以复制下面的链接去 ...

  9. 在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别

    [时间]2018.11.14 [题目]在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别 一.去除换行符 以使用readline进行读取为例: import red ...

最新文章

  1. 【python】 OSError:sift not found 问题解决
  2. hadoop(ha)hbase(双master)安装
  3. learnpython_LearnPython_week1
  4. HashMap的put方法讲解
  5. rsa实现js前台加密java后台解密
  6. java用gui如何写退格_emWin(ucGui)的Edit控件退格处理方法 worldsing
  7. 【Vue】—生命周期函数
  8. linux常用命令100个(转)
  9. golang net/http访问https
  10. 项目质量管理:规划质量管理与控制
  11. 一元三次方程的解法史
  12. web前端html+css实现立体旋转相册(表白可用)
  13. QT中将文件夹内文件名称显示到tableview,对显示的文件名双击直接打开文件
  14. 手机python怎么安装turtle_Python3 turtle安装和使用教程
  15. 解析android:ellipsize=end属性无效的情况
  16. linux zip 加密
  17. 共享内存大数据量快速进程间通讯
  18. 苹果手机怎么编辑word文档_办公软件入门到精通:文档WORD文本编辑
  19. Layui表格中的图片
  20. 春困夏乏 ,8种食物提神抗疲劳

热门文章

  1. CSS-浏览器缩放使边框大小改变,导致布局改变的问题
  2. Centos7 glibc库升级到2.23(实测可行)
  3. 用css样式实现返回箭头
  4. Android 绘制气泡
  5. unicode编码转gb2312编码并显示中文(cjava)
  6. Pytorch官网一直很卡进不去,离线下载pytorch各类版本安装包方法
  7. SQL Native Client][SQL Server]无法将函数单元 'sp_sqlagent_get_startup_info' 添加到组件 'Agen...
  8. 中国存储器“3+1”版图初现
  9. Android如何解决文字转语音播报的问题
  10. linux模拟树莓派,使用QEMU模拟树莓派Raspberry Pi