Python字符串前加f、r、b、u的不同⽤法⼀、字符串前加"f"
1. %
可以使⽤ % 格式化字符串。
c = (250, 250)
# 使⽤ % 格式化
s1 = "坐标为:%s" % c
# TypeError: not all arguments converted during string formatting
s1 = "坐标为:%s" % (c,) # '坐标为:(250, 250)'
# 使⽤ format 格式化
s2 = "坐标为:{}".format(c) # '坐标为:(250, 250)'
2.format
Python 2.6 引⼊ format 格式化字符串的⽅式。
str.format() 是对 %-formatting 的改进,替换字段使⽤⼤括号 {} 标记。
"Hello, {}. You are {}.".format(name, age)
可以通过引⽤索引来改变引⼊顺序:
age = 100
name = 'Hider'
print("Hello {1}.You are {0}-{0}.".format(age, name))
# 'Hello Hider.You are 100-100.'
如果插⼊变量名称,则会获得额外传递对象的权限:
person = {'name':'Hider', 'age':100}
print("Hello {name}.You are {age}.".format(age=person['age'], name=person['name']))
# 'Hello Hider.You are 100.'
使⽤ * 可以针对列表进⾏解码:
data = ["Hider", 100]
print("Name:{0}, Age:{1}.".format(*data))
# 'Name:Hider, Age:100.'
使⽤ ** 来使⽤字典完成巧妙技巧:
person = {'name':'Hider', 'age':100}
print("Hello {name}.You are {age}.".format(**person)) # 解开字典形成独⽴形参
# 'Hello Hider.You are 100.'
填充与对齐
^、<、> 分别是居中、左对齐、右对齐,后⾯带宽度参数。
:
python 正则表达式 空格
后⾯带填充的字符,只能是⼀个字符,默认空格填充。
#Python学习交流:531509025
print("{:>10}".format('18'))# '        18'
print("{:0>10}".format('18')) # '0000000018'
print("{:A>10}".format('18')) # 'AAAAAAAA18'
print("{:A^10}".format('18')) # 'AAAA18AAAA'
zfill ⽅法补充
zfill⽅法返回指定长度的字符串,原字符串右对齐,前⾯填充0,使⽤语法为:
str.zfill(width)
print("18".zfill(10)) # '0000000018'
精度与类型f
精度常跟类型f⼀起使⽤:
print("{:.2f}".format(3.1415926)) # '3.14'
# ⼩数点后2位 float类型
其他进制
b、d、o、x分别代表⼆进制、⼗进制、⼋进制、⼗六进制。
#Python学习交流:531509025
print("{:b}".format(18)) # '10010'
print("{:d}".format(18)) # '18'
print("{:o}".format(18)) # '22'
print("{:x}".format(18)) # '12'
千位分隔符
print("{:,}".format(1234567890)) # '1,234,567,890'
str.format( )是⼀个升级版本,代码易读,但当处理多个参数和更长字符串时,⾮常冗长,每个变量都要指明。
使⽤字典的⽅式 .format(**dict) 解压,并通过字符串中的键值引⽤。
3.Python 3.6 之 f'{}' —— ⼀种改进Python格式字符串的新⽅法
格式化字符串常量(formatted string literals)是 Python 3.6 新引⼊的⼀种字符串格式化⽅法,主要⽬的是使格式化字符串的操作更加简便。
f-string在形式上是以 f 或者 F 修饰符引领的字符串(f'xxx' 或 F'xxx'),以⼤括号 {} 标明被替代的字段。
f-string本质上不是字符串产常量,⽽是⼀个在运⾏时运算求值的表达式。
# 创建
my_dict = {'name':'Hider',
'age':'100'}
print(f"My name is {my_dict['name']}, I'm {my_dict['age']}.")
# My name is Hider, I'm 100.
import time
t0 = time.time()
time.sleep(1)
name = 'processing'
# f⽀持在字符串内使⽤⼤括号{}的python表达式
print(f"{name} done in {time.time() - t0:.2f} s.")
# processing done in 1.00 s.
⼆、字符串前加"r"
r 的作⽤是去除转义字符。
例如:\n 表⽰反斜杠字符 + 字母n,⽽不是换⾏符。
以 r 开头的字符,常⽤于正则表达式,对应re模块。
#Python学习交流:531509025
str1 = 'input\n'
str2 = r'input\n'
print(str1) # input 并换⾏
print(str2) # input\n
三、字符串前加"b"
b 的作⽤是表⽰⼀个 bytes 对象。
⽹络编程中,服务器和浏览器只认 bytes 类型数据。
例如:
response = b'<h1>Hello World!</h1>'
send 函数的参数和 recv 函数返回值都是 bytes 类型。
在 Python3 中,bytes 和 str 相互转换⽅式:
bytes.decode('utf-8') # 解码
四、字符串前加"u"
u 的作⽤是表⽰字符串以 Unicode 格式进⾏编码。
⼀般⽤在中⽂字符串前⾯,防⽌因为源码储存格式问题,导致再次使⽤时出现乱码。
例如:
u'我是中⽂字符串。'
结尾给⼤家推荐⼀个⾮常好的学习教程,希望对你学习Python有帮助!