查看所有Python相关学习笔记
格式化学习
格式化
-
%
数字代表长度,正数是右对齐,负数是左对齐
- %s -->str
- %d -->int
- %f -->float
- %x -->十六进制(%x -->输出时加上0x)
>>>'%10d'% 56 # 最少显示10位,不满足时,填充空格 ' 56' >>>'%010d'% 56 # 最少显示10位,不满足时,填充0 '0000000056' >>> '%-010d'% 56 # 左对齐时不填充0 '56 ' >>> '%9.2f' % 3.145 #小数点后显示两位(四舍五入),总长度为9(包含小数点) ' 3.15'
>>>vs = [('hasen1',89898),('hasen1112',4444)] >>>fs = ''' >>>%-10s salary: %10d $ >>>%-10s salary: %10d $ >>>''' >>>print(fs % (vs[0][0],vs[0][1],vs[1][0],vs[1][1])) # %后面必须是元组 hasen1 salary: 89898 $ hasen1112 salary: 4444 $
- format
-
位置参数和关键字参数结合使用时,位置参数必须在关键字参数之前
- 顺序填坑
>>> print('{},{}'.format(1,2)) 1,2
- 下标填坑
>>> print('{0},{1}'.format(1,2)) 1,2 >>> print('{1},{0}'.format(1,2)) 2,1 >>> print('{0},{1},{0}'.format(1,2)) 1,2,1
- 变量填坑
>>> print('{a},{b}'.format(a=1,b=2)) 1,2 >>> print('{b},{a}'.format(a=1,b=2)) 2,1 >>>
- 基本格式
# 数值(int/float)默认右对齐,字符串(str)默认左对齐 >>>print('{}'.format(56)) >>>print('{:>10}'.format(56)) # 右对齐 >>>print('{:<10}'.format(56)) # 左对齐 >>>print('{:^10}'.format(56)) # 中间对齐 >>>print('{:010}'.format(56)) #补0 56 56 56 56 0000000056 >>>a = 3.45666 >>>print('原始:{}'.format(a)) >>>print('保留一位小数:{:.1f}'.format(a)) >>>print('最少10位:{:10.1f}'.format (a)) >>>print('最少10位左对齐:{:<10.1f}'.format(a)) >>>print('最少10位右对齐:{:>10.1f}'.format(a)) 原始:3.45666 保留一位小数:3.5 最少10位: 3.5 最少10位左对齐:3.5 最少10位右对齐: 3.5
- format格式化下填充指定字符串
- 关于中英文混合时,对齐方式,参考 Python学习-中英文字体格式化补充
a = 'a' b = 3 print(f"右对齐,不足位数(10)时填充‘-’:\t{a:->10}") print(f'左对齐,不足位数(10)时填充‘-’:\t{a:-<10}') print(f'中间对齐,不足位数(11)时填充‘-’:\t{b:-^10}') print(f'中间对齐,不足位数时(11)填充‘-’:\t{b:-^11}')
# 执行结果: 右对齐,不足位数(10)时填充‘-’: ---------a 左对齐,不足位数(10)时填充‘-’: a--------- 中间对齐,不足位数(11)时填充‘-’: ----3----- 中间对齐,不足位数(11)时填充‘-’: -----3-----
- 如果字符串内本身含有{},则需要用两个
>>>print('{} 他说{{你好}}'.format(123.222)) 123.222 他说{你好}
- 简易格式(python 3.6以后)
>>>name = 'hasen' >>>print(f'he said his name is {name}') he said his name is hasen >>>print(f'{123.444:.2f}') 123.44
- 多行的f-string
>>>name = 'hasen' >>>age = '28' >>>message = ( >>>f'hello,my name is {name}\n' >>>f'my age is:{age}。') >>>print(message) hello,my name is hasen my age is:28。