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

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

"u"前缀&无前缀

字符串以Unicode编码格式存储

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

print(str1)
print(str2)

"""
运行结果:
你好	Hello

你好	Hello

"""

"r"前缀

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

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

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

"""
运行结果:
你好	Hello

你好\tHello

"""

"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'

"""

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

b'Hello,World'

"""
  • 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'

Hello,World

"""

你可能感兴趣的:(Python语法)