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

ぃ、小莉子 提交于 2020-01-22 12:12:20

格式说明符/占位符:%

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

用法:' %[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 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符,将光标移动到下一行的开头
\t 横向制表符,将光标向右移动一个制表符位
\r 回车
\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))  # 参数只要是能索引的对象就行

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!