字符串的格式化方法_第1页
字符串的格式化方法_第2页
字符串的格式化方法_第3页
字符串的格式化方法_第4页
字符串的格式化方法_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

09字符串的格式化方法《Python开发技术应用》格式化方法格式化方法是在字符串里设置占位符,随后可以自由地将任何数据类型放置到这些占位符上,实现高度自由的内容定制。Python有三种格式化方法:格式化方法传统的格式化表达式字符串的format()方法自带格式化功能的f-string早期版本推荐的做法,现在不建议使用始于Python2.6由Python3.6引入字符串格式化表达式字符串格式化表达式是Python早期版本的格式化方法,沿用了C语言风格的格式化占位符:字符串格式化表达式规范的写法是两侧各保留一个空格参数可以是字面常量,也可以是符号常量或变量类型码%d表示整数类型的参数print("我是%s,我今年%d岁。"%("小猪佩奇",5))类型码%s表示需要字符串类型的参数输出结果:我是小猪佩奇,我今年5岁。str.format()方法通过在字符串中预留花括号{}来定义格式化占位符,从而完成字符串的格式化。占位符由字段名(fieldname)、转换字段(conversionfield)和格式说明符(formatspecifier)组成,即一般形式为:{字段名!转换字段:格式说明符}每一部分都可以省略str.format()方法调用对象方法的标准格式:对象.方法名(参数)要填充到占位符的数据对象没有任何修饰的(空)占位符print("我是{},我今年{}岁".format("小猪佩奇",5))占位符的字段名>>>"{0}!{0}!{0}!我们万众一心,冒着敌人的炮火,{1}!".format('起来','前进')'起来!起来!起来!我们万众一心,冒着敌人的炮火,前进!'字段名的重复置放和乱序置放由于占位符中的数字代表了参数的序号(下标),所以同一个参数可以重复放在不同的占位符上,只要使用相同的序号即可;也可以交换序号的顺序,或者也可以对部分参数放弃不用。"我叫{},我今年{}岁".format("佩奇",5)"我叫{0},我今年{1}岁".format("佩奇",5)由数字引用的占位符字段名可以在占位符中写上数字,作为序号,该序号对应了参数的顺序,参数的顺序和序列的下标数字一样,从0开始。下面两边的代码是等价的:由名称引用的字段名可以通过参数列表中提供的名称(标识符)来定义占位符:注意参数的写法,这种传递参数的方法称为关键字参数,详见后续的函数相关内容。数字占位符和名称占位符可以混合使用,要注意数字占位符必须在前,名称占位符必须在后。>>>"我是{name},我今年{age}岁。".format(name='小猪佩奇',age=5)'我是小猪佩奇,我今年5岁。'>>>"{0}的作品《{1}》获得了{achieve}。".format('刘慈欣','三体',achieve='雨果奖')'刘慈欣的作品《三体》获得了雨果奖。'占位符的字段名容器参数解包为format()方法提供一个容器对象(如列表)作为参数,format()方法会将这个容器对象解包,令其中的每个元素分别担任各个参数。字典参数解包为format()方法提供一个字典对象作为参数,format()方法会将这个字典对象解包,令其中的每个键值对皆作为一个关键字参数。此时,键的名称也就相当于是参数的变量名,在占位符上需要使用这些名称来使参数与之匹配。>>>argv=['莎士比亚','雨果','托尔斯泰','曹雪芹','海绵宝宝','我']>>>"毫无疑问,{}、{}、{}和{}都是著名的文豪。".format(*argv)'毫无疑问,莎士比亚、雨果、托尔斯泰和曹雪芹都是著名的文豪。'>>>kw={'名称':'仙女座星系','距离':'250万光年','大小':'15万光年','类型':'棒旋星系'}>>>"除了大小麦哲伦星云,离银河系最近的星系是{名称},它离我们远达{距离},直径有{大小},是典型的{类型}。".format(**kw)'除了大小麦哲伦星云,离银河系最近的星系是仙女座星系,它离我们远达250万光年,直径有15万光年,是典型的棒旋星系。'占位符的字段名转换字段>>>"{!s}".format("哈哈")'哈哈'转换字段是占位符的第二部分:{字段名!转换字段:格式说明符}转换字段用于设置参数以何种字符串类型放置到占位符上,前面要加上感叹号“!”,绝大多数情况下都不用设置这一部分内容。!s传递参数之前先对参数调用str(),默认方式。!r传递参数之前先对参数调用repr(),repr()函数以字符串来表达数据对象的字面格式。!a传递参数之前先对参数调用ascii(),类似repr()函数,但是对于非ASCII字符,使用\x,\u或者\U转义。>>>"{!r}".format("哈哈")"'哈哈'">>>"{!a}".format("哈哈")"'\\u54c8\\u54c8'"格式说明符格式说明符的总体认识占位符的最后一部分是格式说明符,以冒号“:”开头。标准格式说明符的形式如下,方括号表示它们是可选的。[[fill]align]

[sign]

[#]

[0]

[width]

[grouping_option]

[.precision]

[type]其各部分含义为:[[自定义填充字符]对齐方式][正负号选项][#(用于显示2、8、16进制的前缀说明符)][0(用于数字最小宽度的左侧填充)][显示宽度][分组选项][.小数精度][类型码]>>>"TheheightofEverestis{:<8}meters.".format('8848')'TheheightofEverestis8848meters.'>>>"TheheightofEverestis{:>8}meters.".format('8848')'TheheightofEverestis8848meters.'>>>"TheheightofEverestis{:^8}meters.".format('8848')'TheheightofEverestis8848meters.'>>>"TheheightofEverestis{:x^8}meters.".format('8848')'TheheightofEverestisxx8848xxmeters.'对齐和填充[[fill]align]

[sign][#][0][width][grouping_option][.precision][type]可以用<、>、^分别表示左对齐、右对齐、居中对齐。在对齐符号的右侧可以带一个整数n用于指定宽度。如果指定了宽度,则可在对齐符号左侧指定一个填充字符,默认以空格填充。可以用=来设置特殊填充——如果存在正负号,在正负号之间允许宽度和填充内容。该选项只对数字类型的参数有效。格式说明符类型码:字符串、整数和进制转换[[fill]align][sign][#][0][width][grouping_option][.precision][type]s字符串类型,可以兼容其他数据类型,是默认的类型码,可以省略;d十进制整数类型;b/o/x/X整数类型的二进制、八进制和十六进制表达,X的大小写决定十六进制中的“A-F”显示为大写或小写,前面的#号与之搭配,用于显示进制前缀,如0b、0x等;>>>"ThedefaultmaskforclassCaddressesisthree{:X}.".format(255)'ThedefaultmaskforclassCaddressesisthreeFF.'>>>"ThedefaultmaskforclassCaddressesisthree{:b}.".format(255)'ThedefaultmaskforclassCaddressesisthree11111111.'>>>"ThedefaultmaskforclassCaddressesisthree{:#o}.".format(255)'ThedefaultmaskforclassCaddressesisthree0o377.'格式说明符类型码:浮点数、显示精度和分组选项[[fill]align][sign][#][0][width][grouping_option]

[.precision][type]f/F浮点数的定点记数法,大小写区别在于对inf、-inf和nan的表达;e/E浮点数的

科学记数法,用e或E来表示指数。默认精度为6位;g/G浮点数的通用格式,根据整数部分的长度来自动选择科学或定点计数法;%浮点数的百分比格式。精度指定了小数点后面要展示多少位小数。对于非数字类型,精度指定了最大字段宽度。整数类型不能指定精度。>>>"{:.5}".format("祝您每天好心情!")'祝您每天好'>>>"圆周率的前几位是{:.5}。".format(3.1415926)'圆周率的前几位是3.1416。'>>>'光速是{:f}米/秒'.format(299792458)'光速是299792458.000000米/秒'>>>'光速是{:f}米/秒'.format(299792458)'光速是299792458.000000米/秒'格式说明符>>>'光速是{:,}米/秒'.format(299792458)'光速是299,792,458米/秒'数字的分组依据分组依据支持以下几种类型:逗号“,”对数字以千为单位进行分隔。下划线“_”对浮点数和d类型的整数以千为单位进行分隔。对于b、o、x和X类型,每四位插入一个下划线,其他类型都会报错。>>>"{:_b}".format(2333333333)'1000_1011_0001_0011_1101_0111_0101_0101'格式说明符f-stringf-string是Python3.6引入的新功能,使用和str.format()方法相同的格式化规则,但语法上更简洁,只需要写一个f在左侧引号外即可,无需再调用format()方法。>>>classmates=['秦始皇','亚历山大','拿破仑','凯撒']>>>f"这是{classmates[2]}、{classmates[0]}、{classmates[1]}和{classmates[3]},都是我的同学。"'这是拿破仑、秦始皇、亚历山大和凯撒,都是我的同学。'>>>>>>d1={'name':'xiaoming','age':22}>>>f"我叫{d1[name]},我今年{d1[age]}岁。"'我叫xiaoming,我今年22岁。'>>>f"ThedefaultmaskforclassCaddressesisthree{255:b}.{255:b}.{255:b}.{0:0<8b}"'ThedefaultmaskforclassCaddressesisthree11111111.11111111.11111111.00000000'案例:字符表格什么是字符表格在命令行界面下,只能显示字符,不能显示真正的表格,因此按表格的方式来呈现内容,就只能由字符对象进行格式化设置,寻求行和列的对齐,以此来达到表格的效果,这就是字符表格。中间留有一定宽度的空白每一列的字符均是对齐的表头和表体之间的分隔线字符表格内容准备先把数据定义好,计算好每一列的宽度,按这个宽度来设置占位符。然后将对应的数据填充进去。数据如下:header=['姓名','国籍','赛项']body=[['吕小军','中国','81公斤级举重'],['苏炳添','中国','百米短跑'],['张常鸿','中国','50米步枪三姿射击']]表头和每一行的数据依次放入占位符:f"{header[0]}{header[1]}{header[2]}"f"{body[0][0]}{body[0][1]}{body[0][2]}"...案例:字符表格列宽的控制表头的第一列只有两个汉字,但表体中都是三个汉字字段

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论