printf()字符串格式化 2018/11/13
|
输出结果:实例1 | | 输出结果:实例2 | | 输出结果:实例3 | ||||||
0 | 0 | 0 | | 0.0 | 0.0 | 0.0 | | 1 | 1 | 1 |
1 | 1 | 1 | | 1.0 | 1.0 | 1.0 | | 2 | 4 | 8 |
2 | 4 | 8 | | 2.0 | 4.0 | 8.0 | | 3 | 9 | 27 |
3 | 9 | 27 | | 3.0 | 9.0 | 27.0 | | 4 | 16 | 64 |
4 | 16 | 64 | | 4.0 | 16.0 | 64.0 | | 5 | 25 | 125 |
5 | 25 | 125 | | 5.0 | 25.0 | 125.0 | | 6 | 36 | 216 |
6 | 36 | 216 | | 6.0 | 36.0 | 216.0 | | 7 | 49 | 343 |
7 | 49 | 343 | | 7.0 | 49.0 | 343.0 | | 8 | 64 | 512 |
8 | 64 | 512 | | 8.0 | 64.0 | 512.0 | | 9 | 81 | 729 |
9 | 81 | 729 | | 9.0 | 81.0 | 729.0 | | 10 | 100 | 1000 |
格式化符号 | | | ||
| | | | |
符 号 | 描述 | 数据类型 | 实例 | remark |
%b | 二进制整数 | | | 不能够用 |
d, i | 十进制整数 | int,float | print('%d' % -3.14)#3 print('%i' % -3.14)#-3 | |
o | 八进制 | int | print('%o' % -20)#-24 | |
u | 十进制整数 | int,float | print('%u' % -3.14)#-3 | |
x,X | 十六进制 | int | print('%x' % -0xa)#-a print('%x' % -10)#-a | |
e,E | f科学计数法 | int,float | print('%e' % -31415926)#-3.141593e+07 | 保留小数点后六位有效数 |
| | | print('%e' % -300) #-3.000000e+02 | |
f,F | 十进制f | float | print('%f' % -31415926) #-31415926.000000 | 保留小数点后六位有效数 |
g,G | g,G | print('%g' % 3.141592657)#3.14159 | %f和%e的简写;小数或科学计数法 | |
c | 单字符 | char,int | print('%c' % 'a')#a print('%c' % 97)#a | |
r(repr) | 转换字符串 | str,int,float | print('%r' % 3.14)#3.14 | print('%r' % 'a\n\n\n')#'a\n\n\n' |
| | | print('%r' % r'a\n\n\n')#'a\\n\\n\\n' | |
s(str) | 转换字符串 | str,int,float | print('%s' % 3.14)#3.14 print('%s' % 'ss')#ss | |
| | | | |
辅助 | | | | |
符 号 | 描述 | |||
* | | | 定义宽度或者小数点精度 | |
- | | | 左对齐 | |
+ | | | 正数前显示加号( + ) | |
" " ;<sp> | | | 在正数前面显示空格 | |
# | | | 八(16)进制数前面显示零'0'('0x'者'0X') | |
0 | | | 数字前面填充'0' | |
% | | | '%%'输出一个单一的'%' | |
(var) | | | 映射变量(字典参数) | |
m.n. | | | m 显示最小总宽度,n 小数点后位数(可用的话) |
文字字符串插值str_f 2018/11/14
https://www.python.org/dev/peps/pep-0498/
===================================================================
1.格式:
f'<text> {<expression> <optional!s,!r或!a> <optional:format specifier>} <text> ...'#返回str
#类似于str.format(),但又差别。
2.注意事项
# 1) 'f'可与'r'或'R'组合产生原始f-string文字。'f'不能与'b','u'组合,不能用二进制f字符串。
# 2) 反斜杠可能不会出现在表达式中的任何位置。表达式中不允许使用'#'字符的注释
# 3) 表达式不能包含':'或'!' 在字符串或括号,括号或大括号之外。唯一例外允许'!='运算符
# 4) 格式化的字符串文字不能用作文档字符串,即使它们不包含表达式。
===================================================================
3.实例
# 3.1.str,number
name = "Tom"
f"Name= {name}." #'Name= Tom.'
f"Name= {repr(name)}." #"Name= 'Tom'."
f'Name= {name!r}' # "Name= 'Tom'"
f'''One {name[1:3]} two''' # 'One om two'
d = {'a': 10, 'b': 20}
f'a={d["a"]}' # 'a=10'
a = 'b'
f'a={d[a]}' #'a=20'
# 3.2.数字格式:f"{value:{width}.{precision}"
width = 10;precision = 4;value = 12.34567
f"result: {value:{width}.{precision}}" #'result: 12.35'
# 3.3.日期格式:f"{date:'%y/%m/%d'}"
import datetime
today=datetime.date.today()
f"{today:'%Y-%m-%d'}" # "'2018-11-14'"
# 3.4. 2,8,,16进制: f"{int:#[0b][0o][0x]}"
f"{10:#0x}"# '0xa'
f"{10:#0o}"# '0o12'
f"{10:#0b}"# '0b1010'
# 3.5.转义字符:
# 格式表达式中不允许反斜杠:要包含需要反斜杠转义的值,请创建一个临时变量
# f"newline: {ord('\n')}" # raises SyntaxError
newline = ord('\n')
f"newline: {newline}"# 'newline: 10'
f'{{{4 * 10}}}' #'{40}'
fr'x = {4 * 10} \ n' # '×= 40 \\ N'
header = 'Subject'
# 3.6.多行书写
x=0
f'''{x
+1}''' # '1'
d={0:'zero'}
f'''{d[0
]}''' # 'zero'
#3.7.字符串连接
x=10;y='hi'
'a' 'b' f'{x}' '{c}' f'str<{y:^4}>' 'd' 'e' #'ab10{c}str< hi >de'
#3.8.表达式
f'mapping is { {a:b for (a, b) in ((1, 2), (3, 4))} }' # 'mapping is {1: 2, 3: 4}'
f'{(lambda x: x*2)(3)}' # '6'
# 3.9.函数
def foo():return 20
f' result={foo()}' # ' result=20'
lst = [0]
def fn(x, y):
... result =x[0]
... x[0] += y
... return result
f'{fn(lst,2)} {fn(lst,3)}'# '0 2'
f'{fn(lst,2)} {fn(lst,3)}'#'5 7'
# 3.10.循环
# for i in range(3):
# s=f'{i}:{d[i]}'
# print(s)
# 循环中的表达式易出错,不要运用
====================================================================