# 字符串格式化
# %[(name)] [flags] [width].[precision] typecode
# 常规的格式化
string = "博客网址:www.cnblogs.com/%s,园龄:%d个月" % ("smelond", 1)
print(string)
# %[(name)]可选,用于指定的key:
string = "博客网址:www.cnblogs.com/%(name)s,园龄:%(age)d个月" % {"name": "smelond", "age": 1} # 用字典方式
print(string)
# flags 可选,可供选择的值有(听说没卵用)
# + 右对齐:正数前加正号,负数前加负号
# - 左对齐:正数前无符号,负数前加负号
# 空格 右对齐:正数前加空格,负数前加负号
# 0 右对齐:正数前无符号,负数前加负号;用0填充空白处
string = "博客网址:www.cnblogs.com/%(name)+20s,园龄:%(age)-10d个月" % {"name": "smelond", "age": 1} # 占有20个空格,smelond在其中,向右对齐
print(string)
# width 可选,占有宽度
# .precision 可选,小数点后保留的位数
string = "数值:%(p).2f" % {"p": 1.23656} # 在后面加上.然后数字,代表保留几位,有四舍五入功能
print(string)
# typecode 必选
# s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置
# r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置(面向对象内容)
# c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
# o,将整数转换成 八 进制表示,并将其格式化到指定位置
# x,将整数转换成十六进制表示,并将其格式化到指定位置
string = "%c___%o___%x" % (65, 15, 15) # 将十进制转换为其他进制(A,17,f)
print(string)
# d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
# e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
# E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
# f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
# F,同上
string = "%d--------%f--------%e--------%E-------%.2ef" % (100000000, 1.23456, 10000000, 10000000, 10000000)
print(string)
# g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
# G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)
string = "%g-------%g-------%G-------%G" % (10000000, 100, 10000000, 100)
print(string)
# %,当字符串中存在格式化标志时,需要用 %%表示一个百分号
string = "name:%s %% %%%%" % "smelond" # 如果需要输出一个%,但是前面已经有了一个占位符,那就需要输出%%才能代表一个%,否者会报错,需要输出%%,就需要%%%%
print(string)
#
# 注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式