python-%用法.doc
在Python编程语言中,百分号(%)是一个非常重要的运算符,它被广泛用于字符串的格式化。这种格式化方式被称为“旧式字符串格式化”或“C风格字符串格式化”,因为它的工作原理与C语言中的printf函数类似。在Python 3.x中,虽然已经引入了更现代的`format()`函数和f-string格式化方法,但了解百分号用法对于阅读和理解一些较旧的代码仍然是必要的。 ### 1. 占位符类型 - `%d` 或 `%i`: 用于整数(integer),将变量转换为十进制整数并插入到字符串中。 - `%f`: 用于浮点数(floating-point),将变量转换为浮点数格式,并保留小数点后默认的6位数字。 - `%s`: 用于字符串(string),将变量直接插入到字符串中,无需转换。 ### 2. 格式化修饰符 #### 宽度修饰符 使用`%[width]`来指定输出的最小宽度。如果值的长度小于指定的宽度,字符串将会在右侧填充空格以达到指定宽度。例如: ```python width = 10 age = 25 msg = "Age: %10d" % age print(msg) # 输出 "Age: 25" ``` #### 左对齐和填充字符 默认情况下,宽度修饰符会在右侧填充空格。如果想在左侧填充,可以使用`%-[width]`。同时,可以使用其他字符填充,如`%0[width]`会使用0填充: ```python age = 25 msg = "Age: %05d" % age print(msg) # 输出 "Age: 00025" ``` #### 小数位数 对于浮点数,可以使用`%.[precision]f`来指定小数位数。例如: ```python pi = 3.1415926 msg = "Pi is approx. %.2f" % pi print(msg) # 输出 "Pi is approx. 3.14" ``` #### 字符串的格式化 对于字符串,`%[width]s`可以控制字符串的最小宽度,如果字符串太短,将在右侧填充空格。如果希望左侧填充,使用`%-[width]s`。 ```python name = "Alice" msg = "%20s" % name print(msg) # 输出 " Alice" ``` ### 3. 其他占位符 - `%c`: 用于单个字符,可以是ASCII码或者Unicode码。 - `%e` 或 `%E`: 用科学记数法显示浮点数。 - `%g` 或 `%G`: 自动选择`%f`和`%e`,取决于数值大小。 - `%o`: 用于八进制数。 - `%r`: 使用repr()函数转换对象并插入字符串。 - `%x` 或 `%X`: 用于十六进制数,`%X`使用大写字母表示十六进制数。 ### 4. 多个占位符 一个格式化字符串可以包含多个占位符,通过逗号分隔各个变量: ```python name = "Alice" age = 25 msg = "Name: %s, Age: %d" % (name, age) print(msg) # 输出 "Name: Alice, Age: 25" ``` ### 5. 使用字典进行格式化 如果占位符对应的是字典中的键,可以用`%(`和`)s`包围键名,然后传递字典作为参数: ```python data = {"name": "Alice", "age": 25} msg = "Name: %(name)s, Age: %(age)d" % data print(msg) # 输出 "Name: Alice, Age: 25" ``` 总结来说,Python中的百分号(%)运算符提供了一种灵活的方式来格式化字符串,尽管在新的Python版本中已被`str.format()`和f-string所替代,但在处理旧代码或理解他人代码时,理解这种格式化方法仍然至关重要。