💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Python 字符串格式化 > 原文: [https://thepythonguru.com/python-string-formatting](https://thepythonguru.com/python-string-formatting) * * * 于 2020 年 1 月 7 日更新 * * * `format()`方法允许您以任何所需的方式格式化字符串。 **语法**: `template.format(p1, p1, .... , k1=v1, k2=v2)` 模板是一个包含格式代码的字符串,`format()`方法使用它的参数替换每个格式代码的值。 例如: ```py >>> 'Sam has {0} red balls and {1} yellow balls'.format(12, 31) ``` `{0}`和`{1}`是格式代码。 格式代码`{0}`替换为`format()`的第一个参数,即`12`,而`{1}`替换为`format()`的第二个参数,即`31`。 **预期输出**: ```py Sam has 12 red balls and 31 yellow balls ``` 对于简单的格式化,该技术是可以的,但是如果要在浮点数中指定精度怎么办? 对于这种情况,您需要了解有关格式代码的更多信息。 这是格式代码的完整语法。 **语法**: `{[argument_index_or_keyword]:[width][.precision][type]}` `type`可以与格式代码一起使用: | 格式码 | 描述 | | --- | --- | | `d` | 用于整数 | | `f` | 用于浮点数 | | `b` | 用于二进制数 | | `o` | 八进制数 | | `x` | 八进制十六进制数 | | `s` | 用于字符串 | | `e` | 用于指数格式的浮点 | 以下示例将使事情更加清楚。 **示例 1**: ```py >>> "Floating point {0:.2f}".format(345.7916732) ``` 在这里,我们指定精度的`2`位,`f`用于表示浮点数。 **预期输出**: ```py Floating point 345.79 ``` **示例 2**: ```py >>> import math >>> "Floating point {0:10.3f}".format(math.pi) ``` 在这里,我们指定`3`精度数字,`10`表示宽度,`f`表示浮点数。 **预期输出**: ```py Floating point 3.142 ``` **示例 3**: ```py "Floating point pi = {0:.3f}, with {1:d} digit precision".format(math.pi, 3) ``` 这里`{1:d}`中的`d`表示整数值。 **预期输出**: ```py Floating point pi = 3.142, with 3 digit precision ``` 如果为整数`ValueError`指定精度,则仅在浮点数的情况下才需要指定精度。 **示例 5**: ```py 'Sam has {1:d} red balls and {0:d} yellow balls'.format(12, 31) ``` **预期输出**: ```py Sam has 31 red balls and 12 yellow balls ``` **示例 6**: ```py "In binary 4 is {0:b}".format(4) # b for binary, refer to Fig 1.1 ``` **预期输出**: ```py In binary 4 is 100 ``` **示例 7**: ```py array = [34, 66, 12] "A = {0}, B = {1}, C = {2}".format(*array) ``` **预期输出**: ```py A = 34, B = 66, C = 12 ``` **示例 8**: ```py d = { 'hats' : 122, 'mats' : 42 } "Sam had {hats} hats and {mats} mats".format(**d) ``` **预期输出**: ```py Sam had 122 hats and 42 mats ``` `format()`方法还支持关键字参数。 ```py 'Sam has {red} red balls and {green} yellow balls'.format(red = 12, green = 31) ``` 请注意,在使用关键字参数时,我们需要在`{}`内部使用参数,而不是数字索引。 您还可以将位置参数与关键字参数混合 ```py 'Sam has {red} red balls, {green} yellow balls \ and {0} bats'.format(3, red = 12, green = 31) ``` 格式化字符串的`format()`方法是一个非常新的方法,它是在 Python 2.6 中引入的。 您将在旧版代码中看到另一种古老的技术,它允许您使用`%`运算符而不是`format()`方法来格式化字符串。 让我们举个例子。 ```py "%d pens cost = %.2f" % (12, 150.87612) ``` 在这里,我们使用`%`左侧的模板字符串。 我们使用`%`代替格式代码的`{}`。 在`%`的右侧,我们使用元组包含我们的值。 `%d`和`%.2f`被称为格式说明符,它们以`%`开头,后跟代表数据类型的字符。 例如,`%d`格式说明符是整数的占位符,类似地`%.2f`是浮点数的占位符。 因此,`%d`被替换为元组的第一值,即`12`,而`%.2f`被替换为第二值,即`150.87612`。 **预期输出**: ```py 12 pens cost = 150.88 ``` 一些更多的例子。 **示例 1**: 新: ```py "{0:d} {1:d} ".format(12, 31) ``` 旧: ```py "%d %d" % (12, 31) ``` **预期输出**: ```py 12 31 ``` **示例 2**: New: ```py "{0:.2f} {1:.3f}".format(12.3152, 89.65431) ``` Old: ```py "%.2f %.3f" % (12.3152, 89.65431) ``` **预期输出**: ```py 12.32 89.654 ``` **示例 3**: New: ```py "{0:s} {1:o} {2:.2f} {3:d}".format("Hello", 71, 45836.12589, 45 ) ``` Old: ```py "%s %o %.2f %d" % ("Hello", 71, 45836.12589, 45 ) ``` **预期输出**: ```py Hello 107 45836.13 45 ``` * * * * * *