python字符串前面u、r、b含义以及str、bytes互转

u/U:表示unicode字符串 
       不但是针对中文,也针对任何的字符串,代表是对字符串进行unicode编码。 一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般不带u;但是中文, 必须表明所需编码, 否则一旦编码转换就会出现乱码。 
建议所有编码方式采用utf8。

r/R:非转义的原始字符串 
      与普通字符相比,其他相对特殊的字符,其中可能包含转义字符,即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n”表示换行,”\t”表示Tab等。而如果是以r开头,那么说明后面的字符,都是普通的字符了,即如果是“\n”那么表示一个反斜杠字符,一个字母n,而不是表示换行了。 
以r开头的字符,常用于正则表达式,对应着re模块。

b:bytes 字节符,打印以b开头
     python3.x里默认的str是(py2.x里的)unicode, bytes是(py2.x)的str, b”“前缀代表的就是bytes。
python2.x里, b前缀没什么具体意义, 只是为了兼容python3.x的这种写法。Python 2 将字符串处理为 bytes 类型。 Python 3 将字符串处理为 unicode 类型。

str、bytes互转

print (key)
print (type(key))
print (value)
print (type(value))
b'122000001206120181205162820072'
<class 'bytes'>
{b'info:key': b'{"t":"2018-12-05T16:28:20.0720024","mod":"Fanuc 0iD","mt":"Fanuc-0i","mn":"362","opm":1,"pst":0,"al":0,"fre":0,"fro":100,"sro":100,"po":1875349,"opt":1185026736,"cut":1441143776,"pn":50,"spn":50,"cc":12061,"stn":122,"sl1":0,"ss1":0,"tn1":909,"cid":46,"pid":74}'}
<class 'dict'>

str与bytes转换:

hbasedata = value.get('info:key'.encode('utf-8'))   #将info:key由str转成bytes
print (key.decode('utf-8'))
print (hbasedata.decode('utf-8'))   #将hbasedata值有bytes转str
122000001206120181205162823145
{"t":"2018-12-05T16:28:23.1452418","mod":"Fanuc 0iD","mt":"Fanuc-0i","mn":"362","opm":1,"pst":0,"al":0,"fre":0,"fro":100,"sro":100,"po":1875349,"opt":1185026736,"cut":1441143776,"pn":50,"spn":50,"cc":12061,"stn":122,"sl1":0,"ss1":0,"tn1":909,"cid":46,"pid":74}

str转bytes:

bytes('haha', encoding='utf8')
str.encode('haha')

bytes转str:

str(b'haha', encoding='utf-8')
bytes.decode(b'haha')

参考:http://www.oschina.net/question/437227_106832

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值