菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 基础教程
(追記) (追記ここまで)

Python format 格式化函数

Python 字符串 Python 字符串


Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {}: 来代替以前的 %

format 函数可以接受不限个参数,位置可以不按顺序。

实例

>>>"{} {}".format("hello", "world")# 不设置指定位置,按默认顺序'hello world' >>> "{0} {1}".format("hello", "world")# 设置指定位置'hello world' >>> "{1} {0} {1}".format("hello", "world")# 设置指定位置'world hello world'

也可以设置参数:

实例

#!/usr/bin/python# -*- coding: UTF-8 -*-print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))# 通过字典设置参数site = {"name": "菜鸟教程", "url": "www.runoob.com"} print("网站名:{name}, 地址 {url}".format(**site))# 通过列表索引设置参数my_list = ['菜鸟教程', 'www.runoob.com']print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))# "0" 是必须的

输出结果为:

网站名:菜鸟教程, 地址 www.runoob.com
网站名:菜鸟教程, 地址 www.runoob.com
网站名:菜鸟教程, 地址 www.runoob.com

也可以向 str.format() 传入对象:

实例

#!/usr/bin/python# -*- coding: UTF-8 -*-classAssignValue(object): def__init__(self, value): self.value = valuemy_value = AssignValue(6)print('value 为: {0.value}'.format(my_value))# "0" 是可选的

输出结果为:

value 为: 6

数字格式化

下表展示了 str.format() 格式化数字的多种方法:

>>> print("{:.2f}".format(3.1415926))
3.14
数字格式输出 描述
3.1415926 {:.2f} 3.14 保留小数点后两位
3.1415926 {:+.2f} +3.14 带符号保留小数点后两位
-1 {:-.2f} -1.00 带符号保留小数点后两位
2.71828 {:.0f} 3 不带小数
5 {:0>2d} 05 数字补零 (填充左边, 宽度为2)
5 {:x<4d} 5xxx 数字补x (填充右边, 宽度为4)
10 {:x<4d} 10xx 数字补x (填充右边, 宽度为4)
1000000 {:,} 1,000,000 以逗号分隔的数字格式
0.25 {:.2%} 25.00% 百分比格式
1000000000 {:.2e} 1.00e+09 指数记法
13 {:>10d} 13 右对齐 (默认, 宽度为10)
13 {:<10d} 13 左对齐 (宽度为10)
13 {:^10d} 13 中间对齐 (宽度为10)
11
'{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11)
1011
11
13
b
0xb
0XB
进制

^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

+ 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格

b、d、o、x 分别是二进制、十进制、八进制、十六进制。

此外我们可以使用大括号 {} 来转义大括号,如下实例:

实例

#!/usr/bin/python# -*- coding: UTF-8 -*-print("{} 对应的位置是 {{0}}".format("runoob"))

输出结果为:

runoob 对应的位置是 {0}

Python 字符串 Python 字符串

AI 思考中...

5 篇笔记 写笔记

  1. #0

    like

    127***[email protected]

    134

    % 操作符,格式如下:

    %[(name)][flags][width].[precision]typecode
    • (name) 为命名
    • flags 可以有 +,-,' '或 0。+ 表示右对齐。- 表示左对齐。' ' 为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0 表示使用 0 填充。
    • width 表示显示宽度
    • precision 表示小数点后精度

    以下是类型码:

    %s 字符串 (采用str()的显示)
    %r 字符串 (采用repr()的显示)
    %c 单个字符
    %b 二进制整数
    %d 十进制整数
    %i 十进制整数
    %o 八进制整数
    %x 十六进制整数
    %e 指数 (基底写为e)
    %E 指数 (基底写为E)
    %f 浮点数
    %F 浮点数,与上相同%g 指数(e)或浮点数 (根据显示长度)
    %G 指数(E)或浮点数 (根据显示长度)
    %% 字符"%"

    举例

    >>> print("%6.3f" % 2.3)
     2.300
    • 第一个 % 后面的内容为显示的格式说明,6 为显示宽度,3 为小数点位数,f 为浮点数类型
    • 第二个 % 后面为显示的内容来源,输出结果右对齐,2.300 长度为 5,故前面有一空格
    >>> print("%+10x" % 10)
     +a

    x 为表示 16 进制,显示宽度为 10,前面有 8 个空格。

    >>>print("%-5x" % -10)
    -a 

    %-5x 负号为左对齐,显示宽度为 5,故 -a 后面有 3 个空格

    >>>pi=3.1415
    >>>print ("pi的值是%s"%pi)
    pi的值是3.1415
    >>>print ("pi的值是%.8f"%pi)
    pi的值是3.14150000
    

    上面的 width, precision 为两个整数。我们可以利用 *,来动态代入这两个量。比如:

    >>> print("%10.*f" % (4, 1.2))
     1.2000

    以下是补充

    简单的说,这是一种将其他变量置入字符串特定位置以生成新字符串的操作,比如说:

    >>> n = "Runoob"
    >>> "My name is %s" % n
    'My name is Runoob'

    这段代码首先定义了一个名为 n 的变量,内容为 Runoob。然后下方的字符串中有一个 %s,他的含义是"这里将被替换成一个新的字符串",用作替换的内容放在字符串后面的%后面,就是那个 n。所以最终这个字符串会变成 My name is Runoob。

    like

    like

    127***[email protected]

    8年前 (2018年08月02日)
  2. #0

    嘟小三

    Xx1***[email protected]

    77

    如果在 str.format() 调用时使用关键字参数,可以通过参数名来引用值:

    >>> print('This {food} is {adjective}.'.format(
    ... food='spam', adjective='absolutely horrible'))
    This spam is absolutely horrible.

    位置参数和关键字参数可以随意组合:

    >>> print('The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred', other='Georg')) The story of Bill, Manfred, and Georg.

    !a (应用 ascii()), !s (应用 str() )和 !r (应用 repr() )可以在格式化之前转换值:

    >>> import math
    >>> print('The value of PI is approximately {}.'.format(math.pi))
    The value of PI is approximately 3.14159265359.
    >>> print('The value of PI is approximately {!r}.'.format(math.pi))
    The value of PI is approximately 3.141592653589793.

    字段名后允许可选的 : 和格式指令。这允许对值的格式化加以更深入的控制。下例将 Pi 转为三位精度。

    >>> import math
    >>> print('The value of PI is approximately {0:.3f}.'.format(math.pi))
    The value of PI is approximately 3.142.

    在字段后的 : 后面加一个整数会限定该字段的最小宽度,这在美化表格时很有用:

    >>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
    >>> for name, phone in table.items():
    ... print('{0:10} ==> {1:10d}'.format(name, phone))
    ...
    Jack ==> 4098
    Dcab ==> 7678
    Sjoerd ==> 4127

    如果你有个实在是很长的格式化字符串,不想分割它。如果你可以用命名来引用被格式化的变量而不是位置就好了。有个简单的方法,可以传入一个字典,用中括号( [] )访问它的键:

    >>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
    >>> print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; '
     'Dcab: {0[Dcab]:d}'.format(table))
    Jack: 4098; Sjoerd: 4127; Dcab: 8637678

    也可以用 ** 标志将这个字典以关键字参数的方式传入:

    >>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
    >>> print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table))
    Jack: 4098; Sjoerd: 4127; Dcab: 8637678

    嘟小三

    Xx1***[email protected]

    8年前 (2018年10月18日)
  3. #0
    34

    元组的 format 用法:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    k=("name","mh")
    v="名字:{0},name:{1}".format(*k)
    print(v)
    8年前 (2018年11月05日)
  4. #0

    hmla

    sen***[email protected]

    30

    利用 ''.format()eval() 来实现简单的进制转换:

    ii=input('input num:') #取值
    iid=eval(ii) #变数字
    bnum_str='{:b}'.format(iid) #二进制化(字符串)
    bnum=eval(bnum_str) #字符串转数字(留用)
    str_putOut='num in b is:{:b}'.format(iid) #输出准备
    print(bnum,str_putOut) #显示数字和准备的输出内容

    还可以加入检测输入内容是否为数字或算式的功能、增加用户选择进制转换种类的功能。

    hmla

    sen***[email protected]

    7年前 (2019年03月21日)
  5. #0

    tempo

    luo***[email protected]

    45

    如上文所述,^, <, > 分别是居中、左对齐、右对齐,后面带宽度,默认使用的是右对齐。 : 号和对齐符(^ > <)之间带填充的字符,只能是一个字符,默认是用空格填充。浮点数的输出也可以像整数一样对齐,规则也同上,实例

    >>> from math import pi
    >>> '{:a>+10.2f}'.format(pi)
    'aaaaa+3.14'
    

    上述格式中的顺序依次为:填充字符 a 、右对齐符号 > 、输出数字带符号 + 、字符串的宽度 10 、保留2位小数 .2f

    tempo

    luo***[email protected]

    7年前 (2019年12月13日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /