共计 1219 个字符,预计需要花费 4 分钟才能阅读完成。
趁着热情继续,今天就来看看数值与字符串,跟着书本的节奏就是从最基础的数据类型开始,然后逐级进阶吧,大部分书的结构都是这样吧!
今天看看博主觉得还不错的几个地方。
No1:字符串格式话使用 f 进行格式化
目前博主使用的大量格式化方式还是基于format,也有看到其他同事提交的代码里使用f进行格式化。的确f格式化会显得代码更简洁,后续博主也会使用起来。但是有些时候还是觉得format比较方,比如下面这个场景
>>> '{0}:{0}网站是由{1}于{2}开始搭建'.format('算法之道','xaiocui',2015)
'算法之道:算法之道网站是由xaiocui于2015开始搭建'
>>>
可以看到format可以借助索引来实现字段重复赋值,这个也是不错的。
No2:几个我不太常用的内置方法,但是看起来还不错
#partition方法、translate方法
#下面就来看看这两个方法的用法
# patition vs split
>>> 'test:alg'.partition(':')
('test', ':', 'alg')
>>> 'test:alg'.split(':')
['test', 'alg']
>>> 'alg'.partition(':')
('alg', '', '')
#translate vs replace
>>> s='test,.alg'
>>> template=s.maketrans(',.',',。')
>>> s.translate(template
... )
'test,。alg'
>>> s.replace(',',',').replace('.','。')
'test,。alg'
>>>
从上面的代码来看partition划分结果的时候会固定产生3元组,所以上面的例子中不包含分隔符也会返回默认的空字符串结果,这个在按照分隔符进行key:value提取的时候会很方便,不需要自己额外的判断时候有key或者value
translate的好处就是不需要进行无止尽的repalce操作,一次定义就可以解决问题。
No3:使用枚举类
很多时候代码里会有一些业务定义的常量,一般不多的时候我会使用大写的变量来标识。但是如果越来越多,且代表不同的含义,如果使用枚举类进行分门别类就会好懂很多。
class UserType(int,Enum):
VIP=0
NORMAL=1
BAN=2
ADMIN=3
上面定义了一个用户类型枚举类,这样在使用的时候会更加清晰易懂。
No4:模版处理字符串
这里推荐的是jinja模版,以前在写web页面的时候使用jinja渲染html就觉得很好用,这里处理非结构化的字符串如果使用jinja模版会更好看。但是个人感觉使用的场景会比较少,因为此时的字符串都会比较长。说到这里就不得不提在llm代码经常会遇到的prompt模版,有时候我还在用常规的字符串格式化方式,也有使用langchain里面的template模版函数,这里使用jinja模版是不是也可以呢?