format格式化字符串?
在计算机编程中,格式化字符串是指通过一定规则将一些数据类型按照特定的方式组合起来,形成一个字符串输出的过程,常见的格式化字符串方法就是通过字符串格式化函数(如C语言中的printf()函数、Python中的.format()函数等)来完成。
格式化字符串主要包括以下方面:
1. 格式化符号(format specifier)
格式化符号是指用来描述输出字符串中各个变量的类型及输出格式的标识符。在C语言中,常见的格式化符号见表1:
| 格式化符号 | 说明 |
|------------|--------------------------------------------------------------|
| %d | 整型变量 |
| %f | 浮点型变量 |
| %c | 字符变量 |
| %s | 字符串变量 |
| %p | 指针变量 |
| %x/%X | 十六进制数 |
| %o | 八进制数 |
| %u | 无符号整型 |
| %e/%E | 科学计数法 |
| %g/%G | 根据数值大小自动选用%f或%e格式,以保证输出精度和美观 |
| %.*f | 输出浮点数并保留小数点后n位,*表示从其他参数中读取保留位数n |
在Python中,常见的格式化符号见表2:
| 格式化符号 | 说明 |
|------------|-----------------------------------------------|
| %s | 字符串 |
| %d | 十进制整型 |
| %f | 浮点数 |
| %e/%E | 科学计数法 |
| %g/%G | 根据数值大小自动选用%f或%e格式,以保证输出精度 |
| %.2f | 浮点数并保留小数点后两位,保留位数由2决定 |
2. 转义字符(escape character)
转义字符是指通过插入一些特殊的字符来显示特殊的符号或产生一些特殊的效果。在C语言中,常见的转义字符见表3:
| 转义字符 | 含义 |
|----------|------------------------------------------------|
| \t | 横向跳到下一个TAB位置 |
|
| 换行符 |
| \r | 回车符(把当前位置移到本行开头,但不换行) |
| \b | 退格符(把当前位置移到前一列) |
| \f | 换页符 |
| \\ | 输出\符号 |
| \' | 输出'符号 |
| \" | 输出"符号 |
| \ooo | 八进制数,其中ooo由1~3个数字组成 |
| \xhh | 十六进制数,其中hh由1~2个数字或字母组成(大小写不区分) |
在Python中,常见的转义字符见表4:
| 转义字符 | 含义 |
|----------|-----------------------------------------------|
| \t | 横向跳到下一个TAB位置 |
|
| 换行符 |
| \r | 回车符(把当前位置移到本行开头,但不换行) |
| \f | 换页符 |
| \' | 输出'符号 |
| \" | 输出"符号 |
| \\ | 输出\符号 |
| \a | 响铃 |
| \b | 退格 |
| \e | Escape(ASCII码为27,表示ESC键) |
| \N{name} | 根据Unicode字符名称,显示该字符 |
| \uxxxx | Unicode码,表示Unicode16位十六进制数xxxx |
| \Uxxxxxxxx | Unicode码,表示Unicode32位十六进制数xxxxxxxx |
| \v | 纵向跳到下一行(垂直制表符) |
| \xhh | 十六进制数,其中hh由1~2个数字或字母组成(大小写不区分) |
| \ooo | 八进制数,其中ooo由1~3个数字组成 |
3. 占位符/填充符(placeholder/fill)
占位符是指输出字符串时占据一定位置的符号,可以是数字、字母或其他特殊符号,用于辅助排版或美化输出效果。在C语言中,常见的占位符见表5:
| 占位符 | 含义 |
|--------|-----------------------------------------------------------|
| %d | 整型占位符,输出d代表的整数,右对齐 |
| %nd | 整型占位符,n为位数,不足n位时左侧补空格,右对齐 |
| %-nd | 整型占位符,n为位数,不足n位时右侧补空格,左对齐 |
| %0nd | 整型占位符,n为位数,不足n位时左侧补0,右对齐 |
| %x | 输出整数的十六进制表示 |
| %o | 输出整数的八进制表示 |
| %c | 输出字符 |
| %s | 输出字符串 |
| %f | 浮点类型占位符,输出f代表的浮点数,右对齐 |
| %.nf | 浮点类型占位符,n为保留小数点后n位 |
在Python中,常见的占位符/填充符见表6:
| 占位符 | 含义 |
|----------------|----------------------------------------------------------|
| {} | 单个值占位符,用于方法.format()中,{}内可选填充符和格式化符号 |
| {:<n} | 左对齐,宽度为n |
| {:>n} | 右对齐,宽度为n |
| {:^n} | 居中,宽度为n |
| {:n.} | 保留n位小数 |
| {:n.f} | 保留n位小数,f代表浮点数 |
| {:a< n} | 左对齐,宽度为n,用字符a填充 |
| {:a> n} | 右对齐,宽度为n,用字符a填充 |
| {:a^ n} | 居中,宽度为n,用字符a填充 |
| {:n,d} | 千位分隔符号 |
| {:n%} | 以百分数形式显示n |
| {:n b} | 表示为二进制数 |
| {:n o} | 表示为八进制数 |
| {:n x} | 表示为十六进制数 |
| {:n c} | 整数n转换为对应的ASCII字符 |
除了上述常见的格式化字符串内容,还有一些特殊的操作可以为格式化字符串增添更多可玩性。例如,在Python中,可以采用f-string的方式对字符串进行格式化,具体用法可以参见下面例子:
name = 'Mike'
age = 21
print(f'My name is {name}, and I am {age} years old.')
此时输出结果为:
My name is Mike, and I am 21 years old.
总之,对于每种编程语言来说,格式化字符串是一种十分重要的工具,有助于程序员对其代码进行美化、规范化,提高代码可读性,从而更好地掌握和使用编程语言。同时,格式化字符串也是
