python笔记 字符串格式化下

159 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情

image.png

0 环境

  • 编辑器:idea
  • 系统版本:win10
  • python版本:3.9.6

1 format方法

相对于之前学的百分号大法,相对繁琐,需要%xx, % (xxx),替换值前需要加%。这不format方法出现了,更加的方便,只需要使用大括号({})作为占位符。当我们使用到format方法时,format传参会自动替换大括号,你可能会说,format(替换值)和之前(%xx, % xxx)比起来,也没少写多少嘛,确实。

我们看下图里1的代码,单个入参,替换成功,且不改变原先字符串,只返回值和c-print类似。多个入参呢,看2里面的代码,和之前的类似,2个{},对应2个替换值。假如你想format替换值的顺序,可以自定义,只需要给每个{}里加个数字,然后format从0开始,排序替换值。但是一旦替换的个数多了,也会容易混乱。

def format_demo():
    s = "are you {}"
    print(s.format("ok"))
    print("s ==>", s)
    s = "are you {}, your are {}"
    print(s.format("ok", "man"))
    s = "Tools we are {1}, Man teaching {0} Hrs"
    print(s.format(7, "man"))

image.png

参数个数多了,还想自定义,并且不容易混乱,可以给每个括号加标识(关键字),比如自己定义关键字。{关键字}, format(关键字=替换值),format方法入参可以无视前后位置了。

image.png

最有意思的是,可以位置和关键字一起使用。注意:位置在前,关键字在后,不遵守就会报错。还有一种报错就是,占位符和参数不匹配也会报错。 image.png

2 f-string

f-string 从3.6开始的增加的。它很适合拼接字符串。这样拼接是不是比上面的format更加的舒服,f'{变量名}...',是不是很适合,变更url,比如拼接数据库url,用它是不是会很合适。

def f_str_demo():
    name = 'zhangsan'
    age = 1000
    print(f'my name is {name}, now i am {age} years old')

image.png

3 总结

我们学了三种格式化方式,c-print,比如%s,string format方法,f-string,python3.6新特性。 format和c-print的类似,最大的区别在于format可以更换替换值的位置,通过{数字}或{关键字}已经{数字} + {关键字}组合。f-string很适合值的拼接,f'{变量名}..',很方便。