python函数使用格式_字符串格式函数格式——Python,格式化,formatpython,篇

本文详细介绍了Python的str.format()方法,包括字段名、数字字段名、关键字字段名、复合字段名的使用,以及转换标志和基本转换格式说明符的格式化方式。通过实例展示了如何进行字符串格式化,包括数字的定点表示、百分比格式和指数记法等。
摘要由CSDN通过智能技术生成

format 格式化函数

字符串调用方法format,并提供要设置其格式的值。

str.format()

方法通过字符串中的大括号

{}

来识别替换字段 ,从而完成字符串的格式化。

字段名:

省略字段名:

{}

使用非负十进制整数

{0}

变量名{name}

省略字段名

大括号内省略字段名,根据

位置参数

参数。

替换字段形式:

{}

注意:大括号个数可以少于位置参数的个数。

s = '你好啊{},我叫{}!'.format('小明', '小红')

print(s)

print('{}你可以吗?不行我来'.format('小黑', '小小鸟'))

"""

你好啊小明,我叫小红!

小黑你可以吗?不行我来

"""

数字字段名

可以通过数字形式的简单字段名传递位置参数。

数字必须是大于等于 0 的整数。

带数字的替换字段可以重复使用。

数字形式的简单字段名相当于把 format 中的所有位置参数整体当作一个元组,通过字段名中的数字进行取值。即 {0} 等价于 tuple[0],所以大括号内的数字不能越界。

print('====数字字段名========')

s = '你好啊{1},我叫{0}!'.format('小明', '小红')

print(s)

print('你好啊{0},我叫{1}!'.format('小明', '小红'))

# 错误写法:相当于下标越界

# print('{1}'.format('ss'))

"""

你好啊小红,我叫小明!

你好啊小明,我叫小红!

"""

关键字字段名(变量字段名)

使用

变量名形式

传递

关键字参数

,字段位置可随意,但需声明关键字。

print('大家好我叫{name},今年{age}岁了'.format(age=20, name='小毛毛'))

print('大家好我叫{name},今年{age}岁了'.format(name='小毛毛', age=20))

"""

大家好我叫小毛毛,今年20岁了

大家好我叫小毛毛,今年20岁了

"""

复合字段名

同时使用了数字和变量名两种形式的字段名就是

复合字段名

复合字段名

支持两种操作符:

.

点号

[]

中括号

使用

.

点号

传递位置参数

替换字段形式:

{数字.属性名}

只有一个替换字段的时候可以省略数字

class Person(object):

def __init__(self,name,age,gender):

self.name = name

self.age = age

self.gender = gender

p = Person('zhangsan',18,'female')

print('姓名是{0.name},年龄是{0.age},性别是{0.gender}'.format(p))

print('姓名是{.name}'.format(p)) # 只有一个替换字段时,可以省略数字

使用

[]

中括号

用列表传递位置参数

用元组传递位置参数

用字典传递位置参数

# 使用`[]`中括号

# 中括号用法:用元组传递位置参数

food = ('小毛毛', '南瓜')

print('我叫{0[0]},年龄{1},爱吃{0[1]}。'.format(

food, 36))

"""

我叫小毛毛,年龄36,爱吃南瓜。

"""

# 中括号用法:用字典传递位置参数

dic = dict(name='小毛毛', pid=1001)

print('我是{[name]}!'.format(

dic))

# 多个替换字段,不能省略数字

print('我是{0[name]},学号{0[pid]}。'.format(

dic))

"""

我是小毛毛!

我是小毛毛,学号1001。

"""

简化format

format格式化一般是在一段字符串后调用,format方法。

简化方法:在字符串前面声明f,既可以不用在写.format后面的语句。例:f’我是{name},今年{age}岁了。

大括号里面一般用变量传值。

name = '毛毛'

age = 20

print(f'我是{name},今年{age}岁了')

print(f'我是{"毛毛"},今年{age}岁了')

"""

我是毛毛,今年20岁了

我是毛毛,今年20岁了

"""

简单字段名的混合使用

混合使用数字形式和变量名形式的字段名,可以同时传递位置参数和关键字参数。

关键字参数必须位于位置参数之后。

混合使用时可以省略数字。

省略字段名

{}

不能和数字形式的字段名

{非负整数}

同时使用。

转换标志

跟在叹号后面的单个字符。当前支持的字符包括r(表示repr)、s(表示str)和a(表示ascii)。如果你指定了转换标志,将不使用对象本身的格式设置机制,而是使用指定的函数将对象转换为字符串,再做进一步的格式设置。

# 转换字段

print('我是{!s}!'.format('小毛毛'))

print('我是{!r}!'.format('小毛毛'))

print('我是{!a}!'.format('小毛毛'))

"""

我是小毛毛!

我是'小毛毛'!

我是'\u5c0f\u6bdb\u6bdb'!

"""

基本转换

格式说明符:

跟在冒号后面的表达式(这种表达式是使用微型格式指定语言表示的)。格式说明符让我们能够详细地指定最终的格式,包括格式类型(如字符串、浮点数或十六进制数),字段宽度和数的精度,如何显示符号和千位分隔符,以及各种对齐和填充方式。

类型

含义

b

将整数表示为二进制数

c

将整数解读为Unicode码点

d

将整数视为十进制数进行处理,这是整数默认使用的说明符

e

使用科学表示法来表示小数(用e来表示指数)

E

与e相同,但使用E来表示指数

f

将小数表示为定点数

F

与f相同,但对于特殊值(nan和inf),使用大写表示

g

自动在定点表示法和科学表示法之间做出选择。这是默认用于小数的说明符,但在默认情况下至少有1位小数

G

与g相同,但使用大写来表示指数和特殊值

n

与g相同,但插入随区域而异的数字分隔符

o

将整数表示为八进制数

s

保持字符串的格式不变,这是默认用于字符串的说明符

x

将整数表示为十六进制数并使用小写字母

X

与x相同,但使用大写字母

%

将数表示为百分比值(乘以100,按说明符f设置格式,再在后面加上%)

# 将小数表示为定点数

print("The number is {num}".format(num=42))

print("The number is {num:f}".format(num=42))

print("The number is {num:F}".format(num=42))

# 将整数转换为二进制数

print("The number is {num:b}".format(num=42))

"""

The number is 42

The number is 42.000000

The number is 42.000000

The number is 101010

"""

数字格式化

数字

格式

输出

描述

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)

print('{:.2f}'.format(3.1415926))

print('{:+.2f}'.format(3.1415926))

print('{:+.2f}'.format(-1))

print('{:.0f}'.format(2.71828))

print('{:0>2d}'.format(5))

print('{:x<4d}'.format(5))

print('{:x<4d}'.format(10))

print('{:,}'.format(1000000))

print('{:.2%}'.format(0.25))

print('{:.2e}'.format(1000))

print('{:>10d}'.format(13))

print('{:<10d}'.format(13))

print('{:^10d}'.format(13))

"""

3.14

+3.14

-1.00

3

05

5xxx

10xx

1,000,000

25.00%

1.00e+03

13

13

13

"""

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值