字符串格式方法format

字符串格式化表达式

字符串格式化允许在单个步骤中对一个字符串执行对个特定类型的替换。严格来讲,它不是必须的,但是很实用。

字符串格式化表达式: '....%s...'%(values)

字符串格式化方法调用 '...{}...'.format(value)

关于字符串格式化表达式现在基本已经弃用,所以这里只讲字符串格式化方法调用。截止Python3.7.3还未被弃用,但是官方也表示十分不推荐,在Python只讲标准库中%的身影影响了它的弃用,但是应该快了。

字符串格式化方法基础

字符串对象的format方法,是基于支持的函数调用语法,而不是表达式语法,特别的,它使用主题字符串作为模板,并且接受任意多个参数,哦用来表示将要根据模板替换的值。

它的使用要求具备函数和调用的知识。但其使用多半是浅显易懂的。在主题字符中,花括号通过为止来指定替换目标以及将要插入的参数。花括号利用是数字,或者关键字。如{1},{food}

本质上,格式阿虎方法调用红章的主题字符串也可以是创建一个临时字符串的字面量,并且任意的对象类型对可以在目标上替换。反正结果是字符串,

添加键、属性和偏移量

格式化字符串可以指定对象属性和字典键,就像在常规的Python语法中一样,方括号指定字典的键,而点表示通过位置或关键字所引用的对象属性。

第一个例子,索引字典上的键‘kind',然后从已经导入的sys模块对象获取‘platform‘属性。第二个例子做同样的事情,但是,通过关键字而不是位置指定对象。

格式化字符串中的方括号可以指定列表及其他序列的偏移量来执行索引,但是,只有单个正偏移量才能在格式化字符串的语法中有效。因此,这一功能并不像是你想象的那样通用。要指定负的偏移量或者使用任意表达式的结果,必须在格式化字符串自身之外运行表达式。

对于最后的要求,可能时代变了,特异尝试一下,表达式,负偏移现在在格式化字符串方法中好使了,我用的是Python3.7.3

高级格式化方法语法

你可以在格式化字符串中添加额外的语法来实现更具体的测试集,对于格式化方法,我们在可能为空的替换目标的标识码中还是用一个冒号,后面紧跟着可以指定字段大小,对齐方式和特定类型编码的格式化说明符。

如下是可以在一个格式字符串中作为替代目标出现的形式化结果,替代四个部分都是可选的,中间必须有空格。

{filedname component ! conversionflag:formatspec}

在这个替代目标语法中:fieldname是便是参数的一个可选的数字或关键字。在python2.7,3.1和后续版本中可以将其省略以使用相对参数编号

component是有着大于等于两个“name”或“[index]”引用的字符串,它们可以被省略以是能用完整的参数值。其中的引用用来获取参数的数学或索引值

coversionfalg如果出现以!开始,后面跟着r,s,或者a,在这个值上分别调用repr,str,ascii内置函数。

formatspec如果出现则以:开始,后面跟着文本,指定了如何表示该值,包括字段宽度,对齐方式,补零,小数精度等细节,并且以一个可选的数据类型码结束。

冒号后面的formatspec组件本身也有丰富的格式,形式上的描述如下。

[[fill]align][sign][#][0][width][,][.precision][typecode]

其中fill可以是除{或}之外的任意填充字符;

align可以是<、>、=或……,分别表示左对齐右对齐,符号字符后的填充,或居中对齐,

sign可以是+、-或空格;

而,逗号选项请求表示千分位分隔符,

width和precision与在%表达式中相同,

formatspec也可以包含嵌套的只有字段名称的{}格式化字符串,它从参数列表动态地获取值

高级格式化方法举例

{0:10}意味着一个10字符宽的字段中第一个位置的参数,出现的:10表示10字符宽度。

用<>表示左对齐右对齐,

浮点数支持格式化声明。

s                   字符串

r                     与s相同,但使用repr,而不是str

c                     字符(int或str)

d                       10进制数字(以10为底的整数)

i                        整数

o                        8进制整数(以8为底)

x                        16进制整数(以16为底)

X                        与x相同,但是使用大写字母

e                        带有指数的浮点数,小写

E                        与额相同,但是使用大写字母

f                          十进制浮点数

F                        与f相同,但是使用大写字母

g                        浮点数e或f

G                        浮点数E或F

这里将3.14159变成以带有指数的浮点数,第一个没有限制,第二个限制小数点保留3位,第三个变成浮点数

还是3.14159,第一个变成浮点数,第二个浮点数小数点保留二位,第三个规定了六位数,而且用0填充,所以是06,如果只是6就用空格填充

fornat方法支持进制转换,

x16进制,o八进制,b2进制。

由于%字符串格式化表达式官方已经不建议使用,所以二者的比较以及延伸的优点这里不做讨论。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容