目录

一、说明

二、字符串输出

2.1 宏代换符号{}

2.1  不设置指定位置,按默认顺序,str插入

2.2  使用关键字参数进行格式化。

2.3 设定位置次序

2.4 设定参数

2.5 通过字典设置参数

2.6 通过列表索引设置参数

2.7 通过对象传递

三、带格式的数字输出

3.1 数字格式的总览

3.2 对齐问题 

3.3 正负号问题

3.4 进位制 问题

3.5 举个例子 


一、说明

        本篇主要针对字符串的输出格式,python2.6 新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

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

二、字符串输出

2.1 宏代换符号{}

        注意,所有的string类型的宏代换部分,基本用法是{}代换。

        Python中的str.format()是一种字符串格式化方法,它允许将一组变量插入到一个字符串中,以对于每个变量预先定义的格式进行格式化。它可以使用大括号{}来标记占位符,并使用相应的参数来替换占位符。例如:

2.2  不设置指定位置,按默认顺序,str插入

"{} 是静静的河流,远处的{}映射在水里".format("桥下", "灯光")

        不设置指定位置,按默认顺序,数据类型可以灵活

name = 'Alice'
age = 25
print('My name is {} and I am {} years old.'.format(name, age))

name = 'Alice'
age = 25
print('My name is {} and I am {} years old.'.format(name, age))

My name is Alice and I am 25 years old.

2.3  使用关键字参数进行格式化。

例如:

print('My name is {name} and I am {age} years old.'.format(name='Bob', age=30))

        输出结果为:

My name is Bob and I am 30 years old.

        在占位符中还可以指定格式,例如:

pi = 3.1415926 print('The value of pi is approximately {:.2f}.'.format(pi))

        输出结果为:

The value of pi is approximately 3.14.

The value of pi is approximately 3.14.

        其中,.2f表示保留两位小数。更多格式化选项可以参考官方文档。

2.4 设定位置次序

ss = "火红的{0} 烧烤着{1}以及人们的 {2}".format("太阳", "大地","庄稼!")   # 设置指定位置 

rr= "{2}被  {1}烧着了 {0}也是这样".format(大地", "太阳","庄稼")     # 设置指定位置

        print(ss,rr) 

2.5 设定参数

  • 参数列出

s1 = "网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com")

print(s1)

输出: 【 网站名:菜鸟教程, 地址 www.runoob.com 】

2.6 通过字典设置参数

site = {"name": "菜鸟教程", "url": "www.runoob.com"}

s1 = "网站名:{name}, 地址 {url}".format( **site ) 

print(s1)

输出: 【 网站名:菜鸟教程, 地址 www.runoob.com 】

2.7 通过列表索引设置参数

my_list = ['菜鸟教程', 'www.runoob.com']

s1 = "网站名:{0[0]}, 地址 {0[1]}".format(my_list) 

2.8 通过对象传递

class AssignValue(object):

        def __init__(self, value):

                self.value = value

my_value = AssignValue(6)

print('value 为: {0.value}'.format(my_value))    # "0" 是可选的,这个很重要

三、带格式的数字输出

3.1 数字格式的总览

数字

格式

输出

描述

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

进制

3.2 对齐问题 

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

3.3 正负号问题

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

3.4 进位制 问题

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

3.5 举个例子 

'鼠标位置{0:3d},{1:3d} '.format(x, y)     # 给出x,y的长度为4