Pyhotn String format

本文介绍Python 2.6及以上版本中str.format()函数的使用方法,包括通过位置、关键字参数、对象属性等方式进行字符串格式化,并展示了填充与对齐、精度与类型等格式限定符的应用。

自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足。那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱。
语法

它通过{}和:来代替%。
“映射”示例

通过位置

?
1
2
3
4
5
6
In [ 1 ]: '{0},{1}' . format ( 'kzc' , 18 )
Out[ 1 ]: 'kzc,18'
In [ 2 ]: '{},{}' . format ( 'kzc' , 18 )
Out[ 2 ]: 'kzc,18'
In [ 3 ]: '{1},{0},{1}' . format ( 'kzc' , 18 )
Out[ 3 ]: '18,kzc,18'

字符串的format函数可以接受不限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。
通过关键字参数

?
1
2
In [ 5 ]: '{name},{age}' . format (age = 18 ,name = 'kzc' )
Out[ 5 ]: 'kzc,18'

通过对象属性

?
1
2
3
4
5
class Person:
   def __init__( self ,name,age):
     self .name, self .age = name,age
     def __str__( self ):
       return 'This guy is {self.name},is {self.age} old' . format ( self = self )
?
1
2
In [ 2 ]: str (Person( 'kzc' , 18 ))
Out[ 2 ]: 'This guy is kzc,is 18 old'

通过下标

?
1
2
3
In [ 7 ]: p = [ 'kzc' , 18 ]
In [ 8 ]: '{0[0]},{0[1]}' . format (p)
Out[ 8 ]: 'kzc,18'

有了这些便捷的“映射”方式,我们就有了偷懒利器。基本的python知识告诉我们,list和tuple可以通过“打散”成普通参数给函数,而dict可以打散成关键字参数给函数(通过和*)。所以可以轻松的传个list/tuple/dict给format函数。非常灵活。
格式限定符

它有着丰富的的“格式限定符”(语法是{}中带:号),比如:

填充与对齐
填充常跟对齐一起使用
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
比如

?
1
2
3
4
5
6
In [ 15 ]: '{:>8}' . format ( '189' )
Out[ 15 ]: '   189'
In [ 16 ]: '{:0>8}' . format ( '189' )
Out[ 16 ]: '00000189'
In [ 17 ]: '{:a>8}' . format ( '189' )
Out[ 17 ]: 'aaaaa189'

精度与类型f
精度常跟类型f一起使用

?
1
2
In [ 44 ]: '{:.2f}' . format ( 321.33345 )
Out[ 44 ]: '321.33'

其中.2表示长度为2的精度,f表示float类型。

其他类型
主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。

?
1
2
3
4
5
6
7
8
In [ 54 ]: '{:b}' . format ( 17 )
Out[ 54 ]: '10001'
In [ 55 ]: '{:d}' . format ( 17 )
Out[ 55 ]: '17'
In [ 56 ]: '{:o}' . format ( 17 )
Out[ 56 ]: '21'
In [ 57 ]: '{:x}' . format ( 17 )
Out[ 57 ]: '11'

用,号还能用来做金额的千位分隔符。

?
1
2
In [ 47 ]: '{:,}' . format ( 1234567890 )
Out[ 47 ]: '1,234,567,890'

### String.format() 用法详解 `String.format()` 是一种非常强大的字符串格式化工具,广泛应用于多种编程语言中,包括 Java 和 Lua。它允许开发者以一种简洁的方式将变量插入到字符串中,并且可以控制这些变量的显示格式。 #### Java 中的 `String.format()` 在 Java 中,`String.format()` 方法提供了一种简单的方式来格式化字符串,类似于 C 语言中的 `printf` 函数。这个方法接受一个格式字符串和一系列参数,然后返回一个格式化的字符串。例如,可以使用此方法来保持两位小数的数字: ```java public static void stringFormatdecimalFormatKeepTwoDecimalPlaces(){ double number = 3.1415926; String result = String.format("%.2f", number); System.out.println(result); } ``` 这段代码会输出 `3.14`,其中 `.2f` 表示保留两位小数的浮点数格式[^1]。 除了数字格式化之外,`String.format()` 还支持日期时间的格式化。这通过特定的转换符 `%t` 实现,后面跟一个字符来指定具体的日期/时间组件。例如,`%tF` 可用于输出 ISO 8601 格式的日期(年-月-日)。 #### Lua 中的 `string.format()` 在 Lua 脚本语言中,`string.format()` 的功能与 Java 类似,但它基于 C 的 `sprintf` 库函数。这意味着它的语法和可用选项可能略有不同,但基本概念相同。Lua 的 `string.format()` 同样可以用来处理复杂的字符串拼接任务,特别是当涉及到数值、进制转换等操作时显得尤为有用。例如,对于十六进制数的表示,可以直接使用 `%x` 或者 `%X` 来分别获取小写或大写的字母形式。 #### 示例 假设我们需要创建一条消息,包含用户的名称和年龄,我们可以这样做: **Java 示例:** ```java String name = "Alice"; int age = 30; String message = String.format("Name: %s, Age: %d", name, age); System.out.println(message); // 输出 Name: Alice, Age: 30 ``` **Lua 示例:** ```lua local name = "Bob" local age = 25 local message = string.format("Name: %s, Age: %d", name, age) print(message) -- 输出 Name: Bob, Age: 25 ``` 在这两个例子中,`%s` 被用来表示字符串类型的参数,而 `%d` 则用于整型值。这样的占位符使得无论是在 Java 还是 Lua 中都能够轻松地构建出动态内容的字符串。 #### 注意事项 - 在使用 `String.format()` 时,必须确保提供的参数类型与对应的格式说明符相匹配,否则可能会抛出异常或者产生不可预测的结果。 - 不同的语言对 `String.format()` 的实现细节有所差异,因此在跨平台开发时需要注意查阅相关文档以确认具体的行为。 希望以上信息能够帮助您更好地理解和运用 `String.format()` 方法。如果您有任何更具体的问题或是想要了解更多高级用法,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值