字符串的高级玩法

字符串的高级玩法

作者: 莫烦 编辑: 莫烦 发布于: 2021-06-03

处理字符串很有意思的,一般的情况下,我们只需要打印出一段特定的话就好了, 但是还有些时候,这些话会应为场景的不同,方式的不同,参数的不同,里面的具体内容就会随之发生改变。 不管你是打印给自己看的,还是输出给别人看的,你都会使用这些方法。

而下面介绍的这些方法就是能让你释放劳动力的功能,让你更关注与编程本身,而不是处理那些繁杂的字符。

string

在这一节涉及到的功能:

%百分号模式

这个应该会算是你接触到最多的一种形式,因为它在很久以前的 Python 版本中就存在了。 下面还有 format,f 字符串都是类似的功能,只是 Python 给你提供了多样化的方式达成类似的目的。

Image

你看,同样是输出一个可配置的字符串,我们就见到了两种不同的方式。而上面第二种,相对而言就算比较简单的,因为当字符串里面要传入的参数变多的时候, 第一种方式将会很混乱。

Image

我们后面再说 % 后面那些标识符的含义,你现在就光看我们的模式,你觉得哪一种看起来比较舒服,比较好写呢?我认为是第二种,你还认为是第一种吗? 要不你自己手打一遍,体验一下~

而且当你要在这句话中塞入更多参数时,即使是第二种也有可能不太适合了,因为我都不记得他们的顺序是怎样的,我很容易就填错了。 那么能不能用字典一样的模式来填入数据呢?

Image

因为用字典我就不用关心后面参数的顺序了,而且有的时候,我还可以重复利用字典里面的 key 做索引。

好了,上面我还卖了个关子,没告诉你们这个 % 后面跟着的字母是什么意思,我现在在下面列了一些比较常用的。

方式 意思
%d 整数
%i 整数
%f 小数
%s 字符

按照这些,我来举几个例子。

Image

关于字符和数字类型,如果你在数字类型(%d,%f)里输入的是字符,它就报错了,不信你试试。 但是你在字符类型(%s)里输入的是数字,它却没有问题,你也可以试试。神不神奇!

还有一个比较常用的方式,就是当你使用小数的时候,你会发现 %f 可以打印出很长一串数字。有时候很占格子,我不喜欢,我可以让它短一点,输出固定长度的小数。

Image

比较上面两种写法,如果你不需要看太多精度的话,你就浓缩一下就好,我觉得简约就是美。同样,下面还有四种对比, 让你看看我不光可以限制小数点后面的长度,也可以对小数点前面的长度做点手脚。

Image

format功能更多

format 的方法是在 % 百分号之后发明的,我一般都比较喜欢用这种方法,因为我觉得它更加 Python。为什么这么说呢? 因为在我眼里,我会认为 format 更像是一个编辑字符串的功能,而非像百分号那样的固定搭配。 我们来对比一下 format 和百分号吧,他们能实现的功能差不多的。只是你可以按你的需求挑选一种你喜欢的方式。

Image

从这里看出,简单的使用方式,就是我只用{}来占位,后面在 format 里按顺序放入值就好了,不用管这个值到底是什么类型。 其实除了这样的方式,format 还支持很多其他方式。比如我给 {} 里放一个数字,表示后面 format 里面的 index,这样我就能复用传入的值了。 这一招就比 百分号 模式要好一些。

Image

除了按照 index 来传字符,我们也可以用字典模式。只要我在 {} 传入一个 key 的名字就好。这样子也是可以复用参数的,方便很多。

Image

同样,我么也是可以在做一些手脚,让它在显示小数或数字时,有更丰富的控制。

Image

对了,你迟早会遇到要在 {} 放入百分号的问题的,至少我在实际中,也遇到了要输入百分号的问题。

Image

我在下面这个表里列一下我觉得你可能会用到的。除了表里这些常用的,还有更多方式,你可以去查一下。

方式 意思
:, 每 3 个 0 就用逗号隔开,比如 1,000
:b 该数字的二进制
:d 整数型
:f 小数模式
:% 百分比模式

f格式化字符串

这个是 Python 3.6 之后引入的一个功能,如果你是其他语言转过来学 Python 的,你可能在其他语言中有遇到过这种形式的字符串处理模式。 这就比百分号%和 format 更加方便易用了。因为你写的字更少了,用有限的生命写出更多的 code~

注意,在使用 f 模式的情况下,我们要在字符串开头加上一个 f。然后用 {} 圈出你的变量名,直接在 {} 引用变量。例子如下:

Image

甚至你还可以在 {} 里做运算,比如下面这样:

Image

不仅仅是节省了代码量,它同样还是保留了一些特殊写法,包括限制字符长度等。做法都和 % 还有 format 类似。

Image

修改字符串

除了让你多样化拼接字符串,比如用 %format 或者 f 方式,我们还可以用一些字符串功能来处理文字的更多需求。

这些我就在下面列一个表告诉你一些常用的吧,还有些不常用的,你也很容易从网上搜到。

方式 意思
strip 去除两端的空白符
replace 替换字符
lower 全部做小写处理
upper 全部做大写处理
title 仅开头的字母大写
split 按要求分割
join 按要求合并
startswith 判断是否为某字段开头
endswith 判断是否为某字段结尾

下面我来介绍几个我觉得有必要介绍的,因为它很有趣。而且很多还可以和正则表达式配合着用。

剔除前后空白

Image

替换文字

Image

文字的大小写处理

Image

拆散你,重组你

Image

街头巷尾遇见你

Image

总结

字符串绝对不是单一的文字,它是有生命的~ 有很多有趣的方法可以丰富你的字符串表达,这里介绍的技术 %formatf 模式,你肯定在使用Python某个阶段中会要用到。


降低知识传递的门槛

莫烦经常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛

我组建了微信群,欢迎大家加入,交流经验,提出问题,互相帮持。 扫码后,请一定备注"莫烦",否则我不会同意你的入群申请。

wechat