Python语法速查: 3. 字符串格式化

(1)简易字符串格式化

字符串属于不可变序列,只能生成新的,不能改变旧的。“字符串格式化”有点像以前C语言的sprintf,可以将若干变量代入格式化的字符串,生成一个符合要求的新字符串。

转换字符 简述 举例或说明
%d 十进制整数
‘num: %d‘ %16   # 结果为 ‘num: 16‘

%o 八进制整数
‘num: %o‘ %16   # 结果为 ‘num: 20‘

%x, %X 十六进制整数(大小写影响输出字母)
‘num: %x‘ %31   # 结果为 ‘num: 1f‘(小写)

‘num: %X‘ %31   # 结果为 ‘num: 1F‘(大写)

%f, %F 浮点数,默认输出6位小数(不区分大小写)
‘num: %f‘ %3.14   # 结果为 ‘num: 3.140000‘

%e, %E 用科学计数法表示的浮点数(大小写影响输出字母)
‘num: %e‘ %314   # 结果为 ‘num: 3.140000e+02‘

‘num: %E‘ %314   # 结果为 ‘num: 3.140000E+02‘

%g, %G 若“指数<-4”或“指数>5”则和%e,%E相同,否则同%f,%F(大小写影响输出字母)
‘num: %g‘ %3140000   # 结果为 ‘num: 3.140000e+06‘

‘num: %g‘ %314   # 结果为 ‘num: 314‘

%s 字符串或任意可用str()生成字符串的对象
‘a %s‘ %‘box‘   # 结果为 ‘a box‘

‘a %s‘ %[1,2]   # 结果为 ‘a [1,2]‘

%r 同上,只不过用repr()去生成字符串
‘a %r‘ %‘box‘   # 结果为 "a ‘box‘"

%c 用ascii码数字去生成单个字符
‘char is %c‘ %97   # 结果为 ‘char is a‘

‘char is %c‘ %0x61   # 结果为 ‘char is a‘

%% 转义%(百分号)
‘50 %%‘   # 结果为 ‘50 %‘

%(键名)转换字符 指定的键必须出现在后面的字典中,若不存在则引发KeyError错误
‘%(a)d‘ %{‘a‘:1}  # 结果为 ‘1‘,注意:转换字符d不要漏掉

“修饰符”可以插入上面的%和字母之间,用以更精确地控制输出字符串的格式,若干个修饰符可组合一起使用。

修饰符 简述 举例或说明
数字 指定被修饰对象的最小宽度(默认右对齐)
‘a%5d‘ %3      # 结果为 ‘a    3‘ (数字3前面有4个空格)

‘a%5s‘ %‘bc‘   # 结果为 ‘a   bc‘ (bc前面有3个空格)

- 表示左对齐
‘a%-5d‘ %3      # 结果为 ‘a3    ‘ (数字3后面有4个空格)

‘a%-5s‘ %‘bc‘   # 结果为 ‘abc   ‘ (bc后面有3个空格)

+ 若被修饰对象为正数,则数字前生成加号
‘a%+5d‘ %3    # 结果为 ‘a   +3‘ (数字+3前面有3个空格)

‘a%-+5d‘ %3   # 结果为 ‘a+3   ‘ (左对齐,+3后有3个空格)

空格 若被修饰对象为正数,则数字前保留一个空格
‘a% 5d‘ %3    # 结果为 ‘a    3‘ (‘ 3‘后面有3个空格)

‘a%-+5d‘ %3   # 结果为 ‘a 3   ‘ (‘ 3‘后有3个空格)

0 若被修饰对象为数字且为右对齐,则在数字前用0代替空格填充
‘a%+05d‘ %3      # 结果为 ‘a+0003‘ (%+05d的总宽度仍为5)

.数字 若被修饰对象为浮点数,则表示小数点后显示位数;若为字符串,则表示字符串的最大宽度
‘%8.2f‘ %3.1415   # 结果为 ‘    3.14‘

‘# 上例含义为:总宽度为8,小数点后保留2位小数,故3.14前有4个空格

* 可以在指定格式数字(宽度、小数位数等)时,用*字符代替直接数字,然后在后面的变量中给出数值
a = 8; b = 2

‘%*.*f‘ %(3.14,a,b)   # 结果为 ‘    3.14‘

(2)高级字符串格式化

通过在字符串对象上调用format()方法来进行字符串格式化,使字符串格式化的语法更加规范。除了一些极其简单的情况外,一般推荐用format()这种方式来进行字符串格式化。

基本用法

以下在字符串内花括号中的内容称为“占位符”。

用法 简述 举例或说明
{数字} 位置参数方式,花括号中的占位符指明后面数据出现的位置(从0开始)
‘{0} {1} is {2}‘.format(‘a‘,‘b‘,3.14)

# 结果为 ‘a b is 3.14‘

{参数名} 关键字参数方式,花括号中占位符指明后面数据的关键字参数
‘{name} is {age}‘.format(name=‘Tom‘,age=6)

# 结果为 ‘Tom is 6‘

联合使用 根据函数入参规则,所有位置数据必须出现在关键字参数前面
‘{0} plus {1} is {ans}, {name}!‘.format(1,5,ans=6,name=‘Tom‘)

# 结果为 ‘1 plus 5 is 6, Tom!‘

扩展使用 占位符还可以进行序列索引、字典键名、对象属性查找,用法见右边各例。
‘{0[2]}‘.format([1,2,3])   # 序列索引,结果为 ‘3‘

‘{li[2]}‘.format(li=(1,2,3))   # 序列索引,结果为 ‘3‘

‘{0[a]}‘.format({‘a‘:1})   # 字典键名索引,结果为 ‘1‘

‘{0.attr}‘.format(obj)   # 取出对象的属性,假设 obj对象具有属性attr

{{, }} 如果要在字符串中表示花括号本身,则需要打上2个花括号
‘{{abc}}‘.format()   # 结果为 ‘{abc}‘

格式说明符

可以使用格式说明符,对输出进行更加精确的控制。方法是用一个冒号给每个占位符添加格式说明,即 {占位符 :格式说明符 } 的形式。“格式说明符”的基本语法如下:

[ [fill]  align]  [sign]  [0]  [width]  [group_option]  [.precision]  [type]

上面 [] 中的每个说明符都是可选的,各说明符的含义和用例见下表:

说明符 简述 举例或说明
fill fill必须align一起使用,用来指定填充字符。
‘{0:*^9}‘.format(‘abc‘)   # 结果为 ‘***abc***‘

# 其中,*为填充字符,^表示居中对齐,9为指定宽度

align 对齐方式(默认数字为右对齐,字符串为左对齐),可取值为:<, >, ^,分别表示:左对齐、右对齐、居中对齐。
‘{0:5}‘.format(‘abc‘)   # 结果为 ‘abc  ‘

‘{0:>5}‘.format(‘abc‘)   # 结果为 ‘  abc‘

‘{0:^5}‘.format(‘abc‘)   # 结果为 ‘ abc ‘

sign 可取值为:+, -, 空格。“+”表示所有数字前都要加上符号,“-”表示只在负数前加符号(默认值),“空格”表示在正数前面加一个空格。
‘{0:+}‘.format(3.14)   # 结果为 ‘+3.14‘

0 用0来填充数字前面的空白,对字符串不起作用
‘{0:+08}‘.format(3.14)   # 结果为 ‘+0003.14‘

width 指明宽度
‘{0:8}‘.format(3.14)    # 结果为 ‘    3.14‘

‘{0:8}‘.format(‘abc‘)   # 结果为 ‘abc     ‘

group_option 千分位分隔,取值可为“,”或“_”(下划线为Python3.6新增,可用来表示二、八、十六进制的每4位分隔。)
‘{0:,}‘.format(12345678)   # 结果为 ‘12,345,678‘

‘{0:_b}‘.format(0xA5)   # 结果为 ‘1010_0101‘

.precision 浮点数要显示的位数,后面需跟type为f或e,否则不起作用。
‘{0:.4f}‘.format(3.14)   # 结果为 ‘3.1400‘

‘{0:.4e}‘.format(3.14)   # 结果为 ‘3.1400e+00‘

type 辅助声明“说明符”的数据类型,可取值范围见下表。(默认:字符串为s、整数为d、小数为f)
type各值举例见下表

type取值范围

字符 简述 举例或说明
d, i 十进制整数
‘{0:d}‘.format(10)   # 结果为 ‘10‘

b 二进制整数
‘{0:b}‘.format(10)   # 结果为 ‘1010‘

o 八进制整数
‘{0:o}‘.format(10)   # 结果为 ‘12‘

x, X 十六进制整数(大小写影响输出字母)
‘{0:x}‘.format(10)   # 结果为 ‘a‘

‘{0:X}‘.format(10)   # 结果为 ‘A‘

f, F 浮点数(默认显示6位小数)
‘{0:f}‘.format(3.14)   # 结果为 ‘3.140000‘

e, E 科学计数法表示(大小写影响输出字母)
‘{0:e}‘.format(3.14)   # 结果为 ‘3.140000e+00‘

‘{0:E}‘.format(3.14)   # 结果为 ‘3.140000E+00‘

g, G 若“指数<-4”或“指数>5”则和g,G相同,否则同f,F(且不会去填满小数6位)
‘{0:g}‘.format(3.14)   # 结果为 ‘3.14‘

% 把一个数乘以100,并在后面加上百分号
‘{0:%}‘.format(3.14)   # 结果为 ‘314.000000%‘

s 表示字符串
‘{0:s}‘.format(‘abc‘)   # 结果为 ‘abc‘

c 用ascii码数字去生成单个字符
‘{0:c}‘.fomrat(97)  # 结果为 ‘a‘

用参数代入说明符

说明符同样可以用format()函数的输入参数来代入,但只能嵌套一层深度,用法举例见下:

>>> ‘{0:{w}}‘.fomrat(‘a‘,w=3)   # 结果为 ‘a  ‘ (将{w}用后面的参数w=3代入,变为‘{0:3}‘
>>> ‘{0:.{1}f}‘.format(3.14,4)  # 结果为 ‘3.1400‘ (将{1}用后面的第二个参数4代入,变为‘{0:.4f}‘)

返回标题

原文地址:https://www.cnblogs.com/initcircuit/p/11574434.html

时间: 2024-10-13 07:02:23

Python语法速查: 3. 字符串格式化的相关文章

Python语法速查: 4. 字符串常用操作

(1)字符串常用方法 Python3中,字符串全都用Unicode形式,所以省去了很多以前各种转换与声明的麻烦.字符串属于序列,所有序列可用的方法(比如切片等)都可用于字符串. 注意:字符串属于不可变序列,所有处理修改字符的方法,都会生成一个新字符串返回,原字符串不会变. 字符串方法 简述 举例或说明 字符串内容检查 s.isalpha() 是否所有字符都为字母 'abc'.isalpha()   # 结果为 True s.islower() 字符串中字母是否都为小写(无视其中的非字母字符) '

Python语法速查: 10. 异常

返回目录 本篇索引 (1)内置异常 (2)自定义异常 (3)主动引发异常 (4)捕捉异常 (5)error模块 (6)with语句 (1)内置异常 ● 异常的基类: 以下这些异常作为具体异常的基类,都不会被显式引发,但是可以使用它们捕捉某种错误. 基类名称 说明 BaseException 所有内置异常的基类,其他所有内置异常都派生自该类.   Exception 所有内置的非系统退出异常都派生自此类(即除了:SystemExit, GeneratorExit, KeyboardInterrup

Python语法速查: 20. 线程与并发

返回目录 本篇索引 (1)线程基本概念 (2)threading模块 (3)线程间同步原语资源 (4)queue (1)线程基本概念 当应用程序需要并发执行多个任务时,可以使用线程.多个线程(thread)同时运行在一个进程(process)的内部, 它们可以共享访问本进程内的全局变量数据和资源.各个线程之间的调度由操作系统负责, 具体做法是:给每个线程分配一个小的时间片,并在所有的线程之间循环切换.在具有多核的CPU上, 操作系统有时会安排尽可能使用每个CPU,从而并行执行线程. 并发编程的复

Python语法速查: 12. 文件与输入输出

返回目录 (1)文件基本操作 ● 文件常用操作 内置函数或方法 描述 open(name [,mode [,buffering]]) 内置函数.用来打开文件,返回一个文件对象(file对象).详见下述 f.close() file对象方法,关闭文件. f.read() file对象方法,读取最多n个字节,若不指定n,则默认读取整个文件.读出的内容以字符串形式返回. f.readline(size=-1) file对象方法.读取整行并返回一个字符串,若指定size,则本行最多读取size个字节.读

Python语法速查:2x. 杂项

返回目录 本篇索引 (1)运行Python程序的方法 (2)查看Python版本 (3)文档字符串和帮助 (4)源代码编码方式 (5)标识符一般约定 (1)运行Python程序的方法 一般不管在Windows下还是Linux下,运行Python程序都要先输入Python解释器名,然后跟一个.py文件名,格式如下: # Windows下运行.py文件(需要事先在环境变量中设置好python解释器的默认路径) python xxx.py # Linxu下运行.py文件 /usr/bin/python

Markdown 语法速查表

Markdown 语法速查表 1 标题与文字格式 标题 # 这是 H1 <一级标题> ## 这是 H2 <二级标题> ###### 这是 H6 <六级标题> 文字格式 **这是文字粗体格式** *这是文字斜体格式* ~~在文字上添加删除线~~ 2 列表 无序列表 * 项目1 * 项目2 * 项目3 有序列表 1. 项目1 2. 项目2 3. 项目3 * 项目1 * 项目2 3 其它 图片 ![图片名称](http://gitcafe.com/image.png) 链接

python学习笔记20(字符串格式化)

Python中内置有对字符串进行格式化的操作% 模板 格式化字符串时,Python使用一个字符串作为模板.模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式.Python用一个tuple将多个值传递给模板,每个值对应一个格式符. 比如下面的例子: print "I'm %s. I'm %d year old" % ('Ethon', 99) 上面的例子中,"I'm %s. I'm %d year old" 为我们的模板.%s为第一个格式符,表示

python学习笔记四:字符串格式化

字符串格式化:%,左侧放字符串,右侧放希望被格式化的值,通常为元组 >>> format = "Hello, %s, %s enough for ya?" >>> values = ('world', 'Hot') >>> print format % values Hello, world, Hot enough for ya? 如果在格式化字符串里面包括百分号,那么必须使用%% 模板字符串:类似于shell中的变量替换 1) 

Python 语法速览与实战清单

基础语法 Python 是一门高阶.动态类型的多范式编程语言:定义 Python 文件的时候我们往往会先声明文件编码方式: 指定脚本调用方式 #!/usr/bin/env python 配置 utf-8 编码 -- coding: utf-8 -- 配置其他编码 -- coding: <encoding-name> -- Vim 中还可以使用如下方式 vim:fileencoding=<encoding-name> 人生苦短,请用 Python,大量功能强大的语法糖的同时让很多时候