Python 字符串格式化

来源:互联网 发布:查看阿里云ecs数据库 编辑:程序博客网 时间:2024/06/06 05:48

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字符串,使用reprc字符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'

0 0