Python处理文本文件中控制字符的方法


Posted in Python onFebruary 07, 2017

控制字符

控制字符(Control Character),或者说非打印字符,出现于特定的信息文本中,表示某一控制功能的字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。

具体控制字符一共有下面两个集合:

七位ASCII定义了33个代码作为控制字符,它们是0到31、以及127,(位于0x00-0x1F及0x7F)。

兼容的八位ISO/IEC 8859-1加上了从ISO/IEC 6429定义的从128到159的32个代码,位于0x80-0x9F。

控制字符列表:http://ascii-table.com/control-chars.php

Python解决控制字符的方案:(未一一验证)

方案一:

strip_control_characters = lambda s:"".join(i for i in s if 31<ord(i)<127)

方案二:

def strip_control_characters(str_input): 
 if str_input: 
 import re 
 # unicode invalid characters 
 RE_XML_ILLEGAL = u'([\u0000-\u0008\u000b-\u000c\u000e-\u001f\ufffe-\uffff])' + \
   u'|' + \
   u'([%s-%s][^%s-%s])|([^%s-%s][%s-%s])|([%s-%s]$)|(^[%s-%s])' % \
   (unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff), 
    unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff), 
    unichr(0xd800),unichr(0xdbff),unichr(0xdc00),unichr(0xdfff), 
    ) 
 str_input = re.sub(RE_XML_ILLEGAL, "", input) 
 # ascii control characters 
 str_input = re.sub(r"[\x01-\x1F\x7F]", "", input) 
 return str_input

方案三:

import re
 
def remove_control_chars(s):
 control_chars = ''.join(map(unichr, range(0,32) + range(127,160)))
 control_char_re = re.compile('[%s]' % re.escape(control_chars))
 
 return control_char_re.sub('', s)
 
cleaned_json = remove_control_chars(original_json)
obj = simplejson.loads(cleaned_json)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
初学python数组的处理代码
Jan 04 Python
Python中type的构造函数参数含义说明
Jun 21 Python
Python线程创建和终止实例代码
Jan 20 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
浅析Python四种数据类型
Sep 26 Python
Python跳出多重循环的方法示例
Jul 03 Python
django中瀑布流写法实例代码
Oct 14 Python
Python partial函数原理及用法解析
Dec 11 Python
Python基础之函数基本用法与进阶详解
Jan 02 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
Python filter过滤器原理及实例应用
Aug 18 Python
python如何利用traceback获取详细的异常信息
Jun 05 Python
关于numpy中np.nonzero()函数用法的详解
Feb 07 #Python
Python脚本实现自动将数据库备份到 Dropbox
Feb 06 #Python
一张图带我们入门Python基础教程
Feb 05 #Python
详解python脚本自动生成需要文件实例代码
Feb 04 #Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 #Python
Django应用程序中如何发送电子邮件详解
Feb 04 #Python
Python算法应用实战之栈详解
Feb 04 #Python
You might like
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
jQuery 使用手册(三)
2009/09/23 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
python实现的udp协议Server和Client代码实例
2014/06/04 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
如何通过命令行进入python
2020/07/06 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
毕业典礼主持词大全
2014/03/26 职场文书
政风行风建设责任书
2014/07/23 职场文书
敬老月活动总结
2014/08/28 职场文书
关于教师节的广播稿
2014/09/10 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
党员民主评议总结
2014/10/20 职场文书
2015年班组工作总结
2015/04/20 职场文书
交通事故案件代理词
2015/05/23 职场文书
保留意见审计报告
2015/06/05 职场文书
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android