Python中二进制串转换为通用字符串的实用技巧
本文介绍在Python处理TXT文件时,如何将读取到的二进制串转换为通用字符串。通过str()函数转换后,需手动去除前缀'b''以解决字典索引时的KeyError问题,并探讨了中英文编码转换的差异。
一个小问题
今日进行实验时,需读取并整理包含中英文词汇的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二进制串转换为通用字符串的方法即为分享的全部内容,希望能提供参考,并感谢大家的支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













