首页 > 解决方案 > 在python中将字节数组转换为字符串

问题描述

背景信息:我想在 sql 查询中将字符串作为参数传递:

sqlq="""select reaction_time from table5 where sessionID=%s"""

我的数据是字节数组的形式(这个 sessionID 也是从数据库中检索的)

{u'sessionID': bytearray(b'001f6340f7651db3e289d348de75f9bb')} 

问题:如何将其转换为字符串,使其如下所示?'001f6340f7651db3e289d348de75f9bb'

标签: pythonsql

解决方案


在 3.X 中:

>>> d = {u'sessionID': bytearray(b'001f6340f7651db3e289d348de75f9bb')}
>>> my_string = d[u"sessionID"].decode()
>>> my_string
'001f6340f7651db3e289d348de75f9bb'

可能你现在在想“我试过这个,但是因为我使用的是 Python 2.7,所以输出是u'001f6340f7651db3e289d348de75f9bb'。我不想在前面那个 'u'。我如何使它成为一个 8 位字符串,而不是一个 Unicode 字符串?”。2.7 字节数组和 2.7 字符串之间的转换很简单——两种类型都是 8 位的,因此不需要解码。一个简单的str()调用就足够了:

C:\Users\Kevin\Desktop>py -2
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> d = {u'sessionID': bytearray(b'001f6340f7651db3e289d348de75f9bb')}
>>> my_string = str(d[u"sessionID"])
>>> my_string
'001f6340f7651db3e289d348de75f9bb'

推荐阅读