-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstr_format.py
128 lines (109 loc) · 5.2 KB
/
str_format.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/usr/bin/env python3
# encoding: utf-8
# @author: hoojo
# @email: hoojo_@126.com
# @github: https://github.com/hooj0
# @create date: 2017-10-23 23:19:04
# @copyright by hoojo@2018
# @changelog Added python3 `string->str format` example
'''
符 号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %f 和 %E 的简写
%p 用十六进制数格式化变量的地址
---------------------------------------------------------------------
符号 功能
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
'''
import math
import datetime
import time
### % 用来格式化字符串的 ###
# %s 用来格式化参:字符串
# %d 用来格式化参:整数
# %f 用来格式化参:浮点数
# %x 用来格式化参:十六进制数
# %? 用来格式化参:任意参数 python2
# % 字符串替换传参, 格式化
print('hello,%s' % 'world') # hello,world
# 多个字符串用 % (参数1,参数2...)
print('I am %s python %s' % ('like', '3.6')) # I am like python 3.6
print()
# %d 进行整数格式化操作
print('string count %d' % 55) # string count 55
# %2d 表示前面补空字符串 2个;%15d 表示补空格15个
# %04 表示位数不够4个,前面补0
print('你有存款美元: %12d,人民币:%04d' % (1, 2)) # 你有存款美元: 1,人民币:0002
print('你有存款美元: %12d,人民币:%04d' % (12345678910123, 21543)) # 你有存款美元: 12345678910123,人民币:21543
print()
# %f 浮点数格式化,可以进行小数位的保留
# %f 默认保留6位小数,不够6位用0代替
print('你有余额:%f' % 1113) # 你有余额:1113.000000
print('你有余额:%f' % 1113.14159267) # 你有余额:1113.141593
# %.f 不保留小数
print('你有余额:%.f' % 7.898) # 你有余额:8
# %.2f 保留2位小数
print('你有余额:%.2f' % 137.518) # 你有余额:137.52
# %.4f 如果小数位不够4位会进行补0
print('你有余额:%.4f' % 137.518) # 你有余额:137.5180
print()
# %x 十六进制
# %x 会将十六进制数值直接输出
print('code %x' % 0x232ff) # code 232ff
# %s 会进行数学转换到十进制
print('hello,%s' % 0x12af) # hello,4783
# %%进行百分号转义
print('百分比 %d %%' % 30) # 百分比 30 %
print('------------------------------------------------------')
#* 定义宽度或者小数点精度
#- 用做左对齐
print('hhahah sfdfd %-s' % 'sdfffff') # hhahah sfdfd sdfffff
# 在正数前面显示加号( + )
print('number: %+d' % 100) # number: +100
#<sp> 在正数前面显示空格
## 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
#0 显示的数字前面填充'0'而不是默认的空格
#% '%%'输出一个单一的'%'
#(var) 映射变量(字典参数)
var = { 'age': 22, 'name': 'jack' }
#m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
# format
print('{1}, {2}, {0}'.format('python', 'is', 'good')) # is, good, python
print('{age}, {name}'.format(age = 22, name = 'jack')) # 22, jack
# 混合模式
print('{0} {age}, {1} {name}'.format('tom is', 'your', age = 22, name = 'jack')) # tom is 22, your jack
# '!a' (使用 ascii()), '!s' (使用 str()) 和 '!r' (使用 repr()) 可以用于在格式化某个值之前对其进行转化:
print('PI: {}'.format(math.pi)) # PI: 3.141592653589793
print('PI: {!r}'.format(math.pi)) # PI: 3.141592653589793
print('PI: {!s}'.format(math.pi)) # PI: 3.141592653589793
print('PI: {!a}'.format('c')) # PI: 'c'
# 小数格式化
print('PI: {0:.3f}, time: {1}'.format(math.pi, time.clock())) # PI: 3.142, time: 1.3586790378921996e-06
# d 针对整数类型, {n:size} size代表空格宽度
var = { 'java': 234234, 'python': 34590}
for key, val in var.items():
print('{0:9}-->{1:10d}'.format(key, val)) # java --> 234234
# 访问字典值,结合索引和key进行访问
print('A-> {0[java]}, B-> {0[python]:d}'.format(var)) # A-> 234234, B-> 34590
# 直接用key访问字典,** 参数转换
print('A-> {java}, B-> {python:d}'.format(**var)) # A-> 234234, B-> 34590
# f'age: {var["name"]}' 格式化输出
print(f'age: {var["name"]}')