python str.format()方法的基本用法

http://python.usyiyi.cn/python_278/library/stdtypes.html#str.format

str.format()方法的基本用法如下所示:

>>> print 'We are the {} who say "{}!"'.format('knights', 'Ni')
We are the knights who say "Ni!"

花括号及其中的字符(称为格式字段)将被替换为传递给str.format()方法的对象。括号中的数字指传递给str.format()方法的对象的位置。

>>> print '{0} and {1}'.format('spam', 'eggs')
spam and eggs
>>> print '{1} and {0}'.format('spam', 'eggs')
eggs and spam

如果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.

‘!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

这种方式与内置函数vars()组合起来将更加有用,该函数返回一个包含所有局部变量的字典。

<think>嗯,用户想要了解Pythonstr.format的使用方法。首先,我得回忆一下自己学过的相关知识。记得str.formatPython中用来格式化字符串的一种方法,比旧的%操作符更灵活。应该从基本用法开始讲,然后逐步深入高级功能。 首先,得解释基本替换,也就是用{}作为占位符,然后按顺序替换参数。比如"{} {}".format("Hello", "World")会变成"Hello World"。这部分可能用户已经知道,但作为基础还是得提一下。 然后是位置参数,可以通过索引指定替换的位置,比如{0}和{1},这样可以重复使用参数,或者改变顺序。例如"{1} {0}".format("World", "Hello")会得到"Hello World"。这一点对于调整顺序很有用。 接下来是关键字参数,使用变量名来替换,比如"{name} is {age} years old".format(name="Alice", age=30)。这样可读性更好,尤其是参数多的时候。 混合使用位置和关键字参数的话,需要注意位置参数必须在关键字参数之前,否则会报错。这点需要提醒用户注意。 然后是格式规范,比如控制数字的小数位数、填充对齐、进制转换等。例如"{:.2f}".format(3.1415)会保留两位小数。这部分可能比较复杂,但很实用,用户可能需要具体的例子来理解。 还有格式化符号,比如对齐(^、<、>)、填充字符、千位分隔符等。比如"{:*^10}".format("hi")会用*填充,让字符串居中,总长度10。这类例子能帮助用户直观看到效果。 另外,访问对象的属性和字典键值,比如对于对象,可以用"{0.name}".format(obj),字典的话可以用"{"name"} is {age}".format(**dict)。这部分可能需要用户有一定的面向对象基础,但如果有相关需求的话,会很有用。 最后,可能还要提到Python 3.6之后的f-string,虽然用户问的是str.format,但简单对比一下,让用户知道有更简洁的方式存在,也是好的。 需要注意用户可能的疑问点,比如当大括号需要转义的时候,应该用双大括号{{}}来表示。还有如果参数个数不匹配会报错,需要确保参数正确。 总结的时候要分点说明,结构清晰,举足够的例子,让用户能跟着例子动手尝试。可能用户是刚开始学习Python,所以需要避免太深入的细节,但又要覆盖常用的功能。确保解释准确,没有错误,同时语言要口语化,不用太正式。</think>`str.format()` 是 Python 中用于字符串格式化的核心方法,它通过 `{}` 占位符和灵活的参数传递,将变量插入到字符串中。以下是常见用法和示例: --- ### **1. 基础用法** - **替换字段**:用 `{}` 作为占位符,按顺序替换参数。 ```python print("{} 的年龄是 {}".format("小明", 18)) # 输出:小明 的年龄是 18 ``` --- ### **2. 位置参数** - 通过索引指定参数位置(索引从 0 开始)。 ```python print("{1} 看到了 {0}".format("猫", "小明")) # 输出:小明 看到了 猫 # 重复使用参数 print("{0} 喜欢 {1},但 {0} 讨厌 {2}".format("小红", "苹果", "香蕉")) # 输出:小红 喜欢 苹果,但 小红 讨厌 香蕉 ``` --- ### **3. 关键字参数** - 用变量名作为占位符,提高可读性。 ```python print("{name} 在 {city} 工作".format(name="张三", city="北京")) # 输出:张三 在 北京 工作 ``` --- ### **4. 混合位置和关键字参数** - 位置参数必须在前,关键字参数在后。 ```python print("{0} 买了 {fruit} 和 {drink}".format("李四", fruit="苹果", drink="牛奶")) # 输出:李四 买了 苹果 和 牛奶 ``` --- ### **5. 格式规范(Format Specification)** - 控制数字、对齐、填充等格式,语法为 `{[参数]:格式}`。 #### **数字格式化** ```python print("圆周率: {:.2f}".format(3.14159)) # 保留两位小数 → 3.14 print("十六进制: {:x}".format(255)) # 转换为十六进制 → ff print("百分比: {:.1%}".format(0.25)) # 百分比格式 → 25.0% ``` #### **对齐与填充** ```python print("{:*^10}".format("HI")) # 居中,宽度10,填充****HI**** print("{:<10}".format("左对齐")) # 左对齐,宽度10 → 左对齐 print("{:>10}".format("右对齐")) # 右对齐,宽度10 → 右对齐 ``` #### **其他格式** ```python print("{:,}".format(1000000)) # 千位分隔符 → 1,000,000 print("{:+} {}".format(5, -3)) # 显示符号 → +5 -3 ``` --- ### **6. 高级用法** - **访问对象属性或字典键值**: ```python class Person: def __init__(self, name, age): self.name = name self.age = age p = Person("王五", 25) print("姓名: {p.name}, 年龄: {p.age}".format(p=p)) # 输出:姓名: 王五, 年龄: 25 # 字典解包 data = {"name": "赵六", "score": 95} print("学生: {name}, 分数: {score}".format(**data)) # 输出:学生: 赵六, 分数: 95 ``` - **格式化列表/元组**: ```python nums = [10, 20, 30] print("第二个数是: {0[1]}".format(nums)) # 输出:第二个数是: 20 ``` --- ### **7. 转义大括号** - 用双大括号 `{{` 和 `}}` 表示字面量的大括号。 ```python print("这是一个 {{占位符}}") # 输出:这是一个 {占位符} ``` --- ### **总结** `str.format()` 提供了高度灵活的字符串格式化方式,结合位置、关键字参数和格式规范,能满足大多数场景需求。对于 Python 3.6+ 用户,还可以尝试更简洁的 [f-strings](https://docs.python.org/3/tutorial/inputoutput.html#formatted-string-literals)(如 `f"{name} is {age} years old"`)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值