Python字符串前缀(u/r/b)的区别

Python字符串前缀(u/r/b)的区别

"u"前缀&无前缀

字符串以Unicode编码格式存储

  • 能存储中文,能转义
  • Python字符串前不加前缀默认采用"u"前缀方式编码,即无前缀="u"前缀
# 字符串"u"前缀&无前缀案例
str1 = '你好\tHello'
str2 = u'你好\tHello'

print(str1)
print(str2)

"""
运行结果:
你好	Hello
<class 'str'>
你好	Hello
<class 'str'>
"""

"r"前缀

字符串所有字符视为普通字符

  • 能存储中文,不能转义
  • 去掉反斜杠的转义机制
# 字符串"r"前缀案例
str1 = u'你好\tHello'
str2 = r'你好\tHello'

print(str1)
print(type(str1))
print(str2)
print(type(str2))

"""
运行结果:
你好	Hello
<class 'str'>
你好\tHello
<class 'str'>
"""

"b"前缀

字符串以ASCII编码格式存储

  • 不能存储中文,不能转义
  • 打印结果会带一个"b",表示该字符串是bytes类型
# 字符串"b"前缀案例
str1 = b'你好\tHello'
str2 = b'Hello\tHello'

print(str1)
print(str2)

"""
运行结果:
SyntaxError: bytes can only contain ASCII literal characters.
b'Hello\tHello'
<class 'bytes'>
"""

str和bytes类型的转换

  • str->bytes
    • 格式:str.encode('utf-8')bytes(str, encoding = 'utf8')
    • 以utf-8编码格式编码
# str->bytes案例
s1 = 'Hello,World'
print(s1)
print(type(s1))

s2 = s1.encode('utf-8')
print(s2)
print(type(s2))

"""
运行结果:
Hello,World
<class 'str'>
b'Hello,World'
<class 'bytes'>
"""
  • bytes->str
    • 格式:bytes.decode('utf-8')str(bytes, encoding = 'utf-8')
    • 以utf-8编码格式解码
# bytes->str案例
b1 = b'Hello,World'
print(b1)
print(type(b1))

b2 = b1.decode('utf-8')
print(b2)
print(type(b2))

"""
运行结果:
b'Hello,World'
<class 'bytes'>
Hello,World
<class 'str'>
"""
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值