python基础——字符串格式化

2022/7/23 14:22:58

本文主要是介绍python基础——字符串格式化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、Python 字符串格式化-----%

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

实例(Python 3.0+)

>>> print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
我叫 小明 今年 10 岁!

python字符串格式化符号:

    符   号描述
      %c  格式化字符及其ASCII码
      %s  格式化字符串
      %d  格式化整数
      %u  格式化无符号整型
      %o  格式化无符号八进制数
      %x  格式化无符号十六进制数
      %X  格式化无符号十六进制数(大写)
      %f  格式化浮点数字,可指定小数点后的精度
      %e  用科学计数法格式化浮点数
      %E  作用同%e,用科学计数法格式化浮点数
      %g  %f和%e的简写
      %G  %f 和 %E 的简写
      %p  用十六进制数格式化变量的地址

格式化操作符辅助指令:

符号功能
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

例子:

>>> print('%c'%98)  #ASCII对应的字母b,此处c要小写
b

>>> print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
我叫 小明 今年 10 岁!

>>> print("%d的八进制为%o"%(100,100)) 
100的八进制为144

>>> print("%d的十六进制为%x"%(100,100))       
100的十六进制为64

>>> print("%f"%3.14)   #浮点数默认精确到小数点后6位
3.140000

>>> print("一个天文单位 %fkm 用科学计数法表示为 %ekm" % (149597871, 149597871))
一个天文单位 149597871.000000km 用科学计数法表示为 1.495979e+08km


>>> print("%g 这个数交给 Python" % 1.496)  #根据值的大小决定使用 %f 或 %e
1.496 这个数交给 Python

>>> print("%g 这个数也交给 Python" % 149597871)  
1.49598e+08 这个数也交给 Python
#例 %f,n1.n2
# n1 所指位数,小数点也算一位,n1 可省,浮点数默认精确到小数点后 6 位
print("0000000000")     # 作为位数参考
print("%6.3f" % 3.1)        # 输出位数有多,添零
print("%.3f" % 3.1)         # 省 n1,只需考虑要精确的位数,不够添零
print("%7.3f" % 3.14159265) # 输出位数不够,四舍五入
print("%7.3e" % 3.14159265) # 科学计数法的 e 及 e 后字符不算位数


#例 -,+
print("%-6.2fA" % 3.1)  # 靠左输出
print("%+6.2f" % 3.1)   # 靠右输出,但多一个+

# 例 %0,用于补齐空格,
print("%5d" % 3)
print("%05d" % 3)

# 例 %x,%X,%o
print("%x" % 100)  # 作为参考
print("%#x" % 100)  # %#x 表示按十六进制的格式输出
print("%#X" % 100)  # x 不区分大小写
print("%#o" % 100)  # %#o 表示八进制,o 为小写字母,大写报错,类型同例1

0000000000
3.100
3.100
3.142
3.142e+00
3.10 A
+3.10
3
00003
64
0x64
0X64
0o144

2、Python 字符串格式化-----str.format()

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序

实例

print("{}{}".format("hello", "world"))
print("{} {}".format("hello", "world")) # 不设置指定位置,按默认顺序
print("{1} {0}".format("hello", "world")) # 设置指定位置 0代表第一个
print("{1} {0} {1}".format("hello", "world")) # 设置指定位置

 helloworld
 hello world
 world hello
 world hello world

也可以设置参数:

实例

print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com")) # 通过字典设置参数

site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site)) # 通过列表索引设置参数

my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
网站名:菜鸟教程, 地址 www.runoob.com
网站名:菜鸟教程, 地址 www.runoob.com
网站名:菜鸟教程, 地址 www.runoob.com

3、Python 字符串格式化-----f-string

f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。

f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:

实例

>>> name = 'Runoob'
>>> f'Hello {name}'  # 替换变量
'Hello Runoob'
>>> f'{1+2}'         # 使用表达式
'3'

>>> w = {'name': 'Runoob', 'url': 'www.runoob.com'}
>>> f'{w["name"]}: {w["url"]}'
'Runoob: www.runoob.com'

用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。

在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果:

实例

>>> x = 1
>>> print(f'{x+1}')   # Python 3.6
2

>>> x = 1
>>> print(f'{x+1=}')   # Python 3.8
x+1=2

 



这篇关于python基础——字符串格式化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程