Python字符串转字节方法及字节列表匹配报错的解决方案
问题解答
1. 如何在Python中将字符串转换为字节?
使用字符串的encode()方法即可完成转换,默认采用UTF-8编码:
my_string = "示例文本" my_bytes = my_string.encode() # 等价于 my_string.encode('utf-8')
如果需要指定其他编码(如GBK),直接在encode()中传入编码名称:
my_bytes = my_string.encode('gbk')
2. 修复字节与字符串类型不匹配的错误
报错原因
代码中lines是字节对象列表,但marker是字符串类型,Python不允许直接对字节和字符串执行in包含判断,因此抛出TypeError: a bytes-like object is required, not 'str'。
修复方案
有两种可行的修复思路:
方案一:将字符串marker转换为字节类型
让判断两边的类型统一为字节,修改代码如下:
def countTransactions(data, lineDelim, marker): lines = data.split(lineDelim) # 将marker编码为字节,与lines元素类型匹配 marker_bytes = marker.encode() return len([i for i in lines if marker_bytes in i])
方案二:将字节列表转换为字符串列表
把lines中的每个字节元素解码为字符串,再进行判断(注意解码编码要与原字节的编码一致,示例用UTF-8):
def countTransactions(data, lineDelim, marker): lines = data.split(lineDelim) # 将字节元素解码为字符串 str_lines = [line.decode('utf-8') for line in lines] return len([i for i in str_lines if marker in i])
内容的提问来源于stack exchange,提问作者Jason Michael
相关产品推荐
相关产品推荐

