Python 字符串格式化

Python 字符串格式化

首先申明下,本文为笔者学习《Python学习手册》的笔记,并加入笔者自己的理解和归纳总结。

1、字符串格式化表达式(%)

格式符%[(name)][flags][width][.precision]typecode
(1) (name)可选,用于选择指定的key。

>>> "%(name)s is %(age)d" % {"name":"Mike", "age":18}
'Mike is 18'
(2) flags可选,可以选择的值有:
  (+)右对齐,正数前加号,负数前减号。
  (-)左对齐,正数前无符号,负数前减号。
  (空格)右对齐,正数前空格,负数前减号。
  (0)右对齐,正数前无符号,负数前减号,用0填充空白处。

>>> "%10d, %10d" % (1234, -1234)        # 默认右对齐
'      1234,      -1234'
>>> "%+10d, %+10d" % (1234, -1234)      # +,右对齐,显示符号
'     +1234,      -1234'
>>> "%-10d, %-10d" % (1234, -1234)      # -,左对齐,不显示加好
'1234      , -1234     '
>>> "%010d, %010d" % (1234, -1234)      # 0,右对齐,0是占位符
'0000001234, -000001234'
(3) width可选,占有宽度。
(4) .precision可选,小数点后保留的位数。

>>> "%010.4f" % (5.0/3)                 # 10位,显示4位小数
'00001.6667'
>>> "%.6f" % (5.0/3)                    # 显示6位小数
'1.666667'
>>> "%010.f" % (5.0/3)                  # 不显示小数
'0000000002'
(5) typecode必选。
代码意义
s字符串
r字符串,使用repr
c字符
d十进制整数
i整数
u无号整数
o八进制整数
x十六进制整数
e浮点指数
E浮点指数
f浮点数
F浮点数
g浮点指数或浮点数
G浮点指数或浮点数
%常量%
整型
>>> x = 255
>>> "%d, %i, %u" % (x, x, x)            # 整型
'255, 255, 255'
>> "%o, %x" % (x, x)                    # 八进制和十六进制
'377, ff'
浮点型
>>> x = 123.4567
>>> "%f, %F" % (x, x)
'123.456700, 123.456700'
>>> "%e, %E" % (x, x)
'1.234567e+02, 1.234567E+02'
>>> "%g, %G" % (x, x)
'123.457, 123.457'

2、字符串格式化方法调用

使用字符串的format()方法。在主字符串,通过花括号,使用序列或者关键字指出替代目标。
>>> "{0} {1}".format("Hello ", "World!")             # 通过序列替代目标
'Hello  World!'
>>> "{name} is {age}".format(name="Mike", age="18")  # 通过关键字替代目标
'Mike is 18'
>>> "{name} is {0}".format(18, name="Mike")          # 混合使用,序列替代在前
'Mike is 18 and live in ShangHai'
>>> "{1[name]} is {0}".format(18, {"name":"Mike"})   # 对替代结果操作
'Mike is 18'
在序列或者关键字后添加:,指定具体的格式,格式是[[fill]align][sign][#][0][width][.precision][typecode]。
(1) fill可选,空白处填充的字符。
(2) align可选,对齐方式:
  (<)内容左对齐。
  (>)内容右对齐。
  (=)内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。
  (^)内容居中。

>>> "{0:-<20}".format("Hello World!")   # 左对齐,-填充
'Hello World!--------'
>>> "{0:->20}".format("Hello World!")   # 右对齐,-填充
'--------Hello World!'
>>> "{0:-^20}".format("Hello World!")   # 居中对齐,-填充
'----Hello World!----'
>>> "{0:0>20}".format(-1234)            # 右对齐,0填充,符号在填充右侧
'000000000000000-1234'
>>> "{0:0=20}".format(-1234)            # 右对齐,0填充,符号在填充左侧
'-0000000000000001234'
(3) width可选,格式化所占宽度。
(4) sign可选,有无符号数字
  (+)正数前加号,负数前减号。
  (-)正数前无符号,负数前减号。
  (空格)正数前空格,负数前减号。

>>> "{0:+}, {1:+}".format(1234, -1234)  # 加号显示符号
'+1234, -1234'
>>> "{0:-}, {1:-}".format(1234, -1234)  # 减号不显示符号
'1234, -1234'
>>> "{0: }, {1: }".format(1234, -1234)  # 空格在正数前实现空格
' 1234, -1234'
(5) #可选,对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x
>>> "{0:+}, {1:+}".format(1234, -1234)  # 加号显示符号
'+1234, -1234'
>>> "{0:-}, {1:-}".format(1234, -1234)  # 减号不显示符号
'1234, -1234'
>>> "{0: }, {1: }".format(1234, -1234)  # 空格在正数前实现空格
' 1234, -1234'


版权声明:本文为chennai1101原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。