Python格式化输出字符串 (%, format(), f'')

Posted pyonwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python格式化输出字符串 (%, format(), f'')相关的知识,希望对你有一定的参考价值。

格式说明符/占位符:%

目的:格式与内容分离,制作复杂的公共字符串模板,让某些位置变成动态可输入的。

用法:‘ %[datatype]  ‘  % (data, data, ...)

  %前设置输出格式,用引号括起来;%后设置输出内容,格式部分有几个%,内容部分就有几个数据,多个数据时用小括号括起来,并用逗号分隔。

  需要输出%时,可以用%%转义,就取消了占位符的作用

print(3%%%s % gg)

 

结果:

3%gg

 

整型

%o 八进制 ,%d  (或%i)十进制,%x 十六进制

print(%d % 30)
print(%o % 30)
print(%x % 30)

执行结果:

30
36
1e

浮点数

%f 普通输出,默认小数点后6位,

%e 科学计数法输出 ,默认同上

%g 默认6位有效数字,默认普通输出,当整数部分超过有效数字位数时,改为科学计数法输出

%.3f 保留3位有效数字

print(%f % 1.22221233)
print(%e % 1.11287631812)
print(%.8g % 682632894.85982379)

结果:

1.222212
1.112876e+00
6.8263289e+08

字符串输出

%s 

%20s 右对齐,20位宽度,超过没事儿,不够补空格

%-20s 左对齐,同上

%.5s 截取5位

%10.5 右对齐,10位宽度,截取5位 

在%与s中间,可选项

  [-]对齐方式

  [num]占位宽度

  [.num]截取位数

print(%s % ok)
print(%20s % interpreter)
print(%-20s % interpreter)
print(%.5s % interpreter)
print(%20.5s % interpreter)
msg = " %s  %s  %s " %(hello,world,!)
 

name = input(请输入姓名)
age = input(请输入年龄)
job = input(请输入职业)
hobby = input(请输入兴趣)
msg = ‘‘‘------------ info of %s ------------
Name : %s
Age : %d
Job : %s
Hobby : %s
------------ end ------------‘‘‘ % (name,name,int(age),job,hobby)
print(msg)
 

结果:

ok
_________interpreter
interpreter_________         
inter
inter_______________

 

转义字符

转义字符描述
(在行尾时) 续行符
\ 反斜杠符号
单引号
" 双引号
a 响铃
 退格(Backspace)
e 转义
00
换行
v 纵向制表符,将光标移动到下一行的开头
横向制表符,将光标向右移动一个制表符位
回车
f 换页

 

format()

格式化输出,还有另一种方法,那就是format()函数。

基本语法是通过 {} 和 : 来代替以前的 % 。与%同理,可以用{{}}来转义输出{}。

 

输出数字

: 后面写格式说明,形如{:.3f},表示小数点后3位有效数字的浮点数;{:.2%}表示百分数小数点后两位。

最前面是要填充的字符,只能是单个字符,默认是空格。

^, <, > 分别是居中、左对齐、右对齐,后面带宽度

+ 表示在正数前显示 +,负数前显示 -

.表示有效数字位数

 

 

 

输出字符串

用法一:使用位置参数

print({} {}.format(hello, world))

print({0}{1}{2}{3}{4}{3}{2}{1}{0}.format(, , , , ))

  可以使用list作为参数,列表对象前要加*,如下(可以和用法三中索引列表进行比较)

list1 = [A, B, C]
print({} {} {}.format(*list1))
# 可以用索引号随意选择输出的元素,结果:A B A
list1 = [A, B, C]
print({0} {1} {0}.format(*list1))
# 当传入两个列表参数时,索引号会依次排列下去,结果:A B A c a
list1 = [A, B, C]
list2 = [a, b, c]
print({0} {1} {0} {5} {3}.format(*list1, *list2))

 

用法二:使用关键字参数,在{}内写变量名,用format()参数传入相应变量

print(‘‘‘地区:{area}
人口数:{people}‘‘‘.format(area=上海, people=24000000))
# 必须在format()参数内对关键字进行赋值。
print(‘‘‘地区:{area}
人口数:{people}‘‘‘.format(area=上海, people=24000000))
# 必须在format()参数内对关键字进行赋值。

# 但是,如果使用另一种方式(3.6以上版本),可以让关键字在外面赋值
area = 阿拉斯加
people = 100
print(f‘‘‘地区:{area}
人口数:{people}‘‘‘)

  可以使用dict作为参数,字典对象前要加**,如下

dict1 = {area: 北京, people: 22000000}
print(‘‘‘地区:{area}
人口数:{people}‘‘‘.format(**dict1))

用法三:使用索引

# A 90 B 80 C 70
list1 = [A, B, C]
list2 = [90, 80, 70]
print({0[0]} {1[0]} {0[1]} {1[1]} {0[2]} {1[2]}.format(list1, list2))  # 参数只要是能索引的对象就行

 

 

 

以上是关于Python格式化输出字符串 (%, format(), f'')的主要内容,如果未能解决你的问题,请参考以下文章

Python格式化输出字符串 (%, format(), f'')

python输出格式化及函数format

Python之字符串format格式化

Python格式化字符串和format函数

编程53--python学习27使用format格式化字符串的过程中,输出大括号问题解决

07 python 数字的格式化输出 format(重要)