概述
代码转换
ord('s')# 将单个字符转换为ASCII码
chr(115)#将ASCII码转换为字符
int('1101',2)#将字符串以2进制翻译成int
eval('[1,2,3]') #内置函数,可以将字符串转化为任意类型对象(字符串表面看起来的类型,转义符会被自动忽略)
多次修改优化
由于字符串时不可变的,每进行一次修改就要产生一个新对象,如果对一个超长字符串进行多次修改,为了优化性能,可以先将字符串转化为可变的类型,在修改后再转换回来。
S = 'sleeping'
L = list(S)
L[3] = 'M'
S = ''.join(L)
格式化
1、%格式化表达式
使用%符号,左面是一个带有转换目标的需要格式化的字符串,右面是待插入的对象。当右侧值多于一个的时候,必须要放在一个元组中。
'%d %s %d you'% (1, 'spam', 4) # '1 spam 4 you'
S = 'sleeping'
L = list(S)
parts = L[0], L[-1], L[1:-2]
'first=%s, last=%s, middle=%s'%parts #"first=s, last=g, middle=['l', 'e', 'e', 'p', 'i']"
"%s"%((1,2,3),)#如果想要输出元组,就把该元组放到另一个元组中
由于所有的对象都可以转换为字符串,所以除非特殊格式化,基本所有对象都可以使用%s来表示待转换目标。
格式化代码:
通用结构:
操作:
- 放置一个字典的键
- 罗列出左对齐(-),正负号(+),和补零(0)的标志位
- 给出数字的整体长度和小数点后的位数(width和precision都可以编码为一个*,以指定他们应该从输入值的下一项中取值)
- 其他详见标准手册
示例:
x = 1234.5678
'%-9.3f %+010.2f %*.*f'%(x,x,11,4,x) #'1234.568 +001234.57 1234.5678'
#当不用0补齐时,如果设置的总体长度超过数字长度,会默认在左边加适量空格,如果是左对齐,就在右边加空格
基于字典的格式化
在字符串中引用字典的键(即是通用结构中的(name)),在待转换对象中放入字典,即可实现转换。常用于HTML和XML的程序中。
示例:
L = {'n':123, 'x':'hhh'}
"%(n)d %(x)s"%L #'123 hhh'
"%(n)d %(x)s"%dict(n=444, x='234') #'444 234'
这种方法也常与内置函数vars配合(vars()返回一个字典,包含所有变量和对应的赋值,所有指的是程序的所有,包括自定义和自带的):
s = 435
n = [4,6]
e = 'ww'
'%(s)d %(n)s %(e)s'%vars() #'435 [4, 6] ww'
2、format格式化调用方法
使用花括号{}以及format将对象传递给字符串。
在新版本的python中,{}中的数字可以省略,由程序自行匹配。
使用方括号指定字典键,使用点表示属性:
使用其他序列也可以(如列表),但是其索引只能正向偏移量,因此并不是十分通用。如果想要使用负的偏移或分片,或者任意表达式,必须在字符串之外运行:
{}中添加具体格式化
形式如下:
filename指定一个数字或者指代名,可以带[]索引,同上面介绍的{}里面的内容一样。
coversionflag可以是r、s、a,分别代表该值对repr、str或ascii的调用。
formatspec指定了字符串一些具体的格式,如字段宽度、对齐方式、补零、小数点精度等。具体组成如下:
其中, align可以是<、>、=、^,分别代表左对齐、右对齐、一个标记字符后的补充、居中对齐。
除了普通的硬编码,类似于%格式化表达式中的*,formatspec也支持嵌套、只带有{}的格式化字符串,从参数列表中动态地获取值:
此外,格式化方法中typecode除了格式化表达式支持的那些以外,还支持二进制类型编码‘b’。
具体详见库手册
%与format比较
- 通常情况下,格式化%表达式书写起来更加方便。
- 但是格式化方法囊括格式化表达式的功能,此外,它还具有一些额外功能:二进制类型编码、千分位分组、支持直接的键和属性引用,并且可读性更好。
最后
以上就是欢喜火车为你收集整理的Python碎片日记14——字符串:代码转换、多次修改优化、格式化代码转换多次修改优化格式化的全部内容,希望文章能够帮你解决Python碎片日记14——字符串:代码转换、多次修改优化、格式化代码转换多次修改优化格式化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复