Python二进制串转换为通用字符串的方法


Posted in Python onJuly 23, 2018

一个小问题

今天在做一个实验时,需要对一个包含中英文词汇的TXT文件进行读入和整理。

Python代码的编码规则为UTF-8。在读入时,文件的每行是二进制串,形如:

b'heroes\xff.....

在对每行进一步进行处理时,要求处理对象必须为通用字符串,所以:

lineVec = str(line).strip().split('\t')

此时的lineVec的元素类型为string,但输出是仍然是 “b'heros\xff…..” ,仍然无法摆脱二进制标志的影响。然而,尴尬的是,在后边对以lineVec元素作为键的字典进行索引时,只能获得通用字符串的键。所以,每次索引都以KeyError退出。

在多次尝试之后,我发现:二进制串在经过str()函数转化之后,已经将所有的内容都转化成了一个通用的字符串。也就是说,“b'heros\xff……”中的所有字符都是可以用python的字符串处理手段处理的。

给定一个 word=”b'heros”,如果希望得到通用字符串形式的单词”heros”,那么我们可以直接取字符串word的第3至最后一个字母,或将“b'”直接替换掉:

newWord = word[2:-1]
#或
newWord = word.replace("b'",'') #因为单引号是python中表示字符串的特殊功能字符,所以被替换的字

符写作'b''会报错。需要用双引号把单引号括起来。

在用上面的方法把字典键都更新了一遍之后,世界瞬间和谐了。

一些扩充

在解决上边的问题的过程中,搜索了许多相关的解决方法,对python中二进制串与通用字符串之间的转换有了一定的了解。但都是关于纯英语字符串转换的,对上边的中文字符无用。用下面方法转换中文字符串时会出现编码错误。

给定通用字符串 string = ‘a string' , 需要把它转换为二进制串时,可以直接调用字符串的内置方法:

print string
>>>a string

bstring = string.encode('ascii') # encode方法,参数用来指定编码标准
print bstring
>>>b'a string'

string1 = bstring.decode('ascii') # encode的逆,对二进制串进行解码
print string1
>>>a string

在进行文本文件读入和解析时,经常会遇到这样的二进制问题,希望对大家有所帮助。

以上这篇Python二进制串转换为通用字符串的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中argparse模块用法实例详解
Jun 03 Python
Python语言实现机器学习的K-近邻算法
Jun 11 Python
详解python里使用正则表达式的全匹配功能
Oct 19 Python
python2.7到3.x迁移指南
Feb 01 Python
浅谈Python Opencv中gamma变换的使用详解
Apr 02 Python
Python中dict和set的用法讲解
Mar 28 Python
浅谈django不使用restframework自定义接口与使用的区别
Jul 15 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
Jul 18 Python
高考考python编程是真的吗
Jul 20 Python
python 实现控制鼠标键盘
Nov 27 Python
Pycharm 跳转回之前所在页面的操作
Feb 05 Python
Python Pygame实战之塔防游戏的实现
Mar 17 Python
Python基于多线程实现ping扫描功能示例
Jul 23 #Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 #Python
python定向爬虫校园论坛帖子信息
Jul 23 #Python
python实现图片批量压缩程序
Jul 23 #Python
python中的插值 scipy-interp的实现代码
Jul 23 #Python
Flask框架URL管理操作示例【基于@app.route】
Jul 23 #Python
python中的turtle库函数简单使用教程
Jul 23 #Python
You might like
php生成静态文件的多种方法分享
2012/07/17 PHP
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
PHP递归创建多级目录
2015/11/05 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
利用Python如何批量更新服务器文件
2018/07/29 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
Python Flask框架扩展操作示例
2019/05/03 Python
python pytest进阶之fixture详解
2019/06/27 Python
深入分析python 排序
2020/08/24 Python
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
土建专业毕业生自荐书
2014/07/04 职场文书
售房协议书
2014/08/19 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
投标邀请书范本
2015/02/02 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
关爱空巢老人感想
2015/08/11 职场文书