ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python字符串格式化全解析:从基础到高级用法

Python字符串格式化全解析:从基础到高级用法 列表里面的方法, 还有字符串里面的方法。字符串 () 使用方法及示例字符串方法这个方法是对字符串进行格式化处理的, 它会把指定的数值放进去, 并且把这个数值放入到字符串原本留好的占位符里面去。在定义占位符的时候是使用大括号{ }来进行定义的。请往下移动, 到达“占位符”这个部分, 在那里可以了解到关于占位符的更为详细的内容。该方法能够返回进行格式化之后的字符串内容。) 这个方法, 它的语法样子是:template.format(p0, p1, ..., k0v0, k1v1, ...)在这儿p0、p1, 这样的位置参数, 以及k0、k1, 这样具有值v0、v1等的关键字参数。并且, 它是格式代码与参数占位符进行混合后的结果。字符串()参数这个办法采用了数量任意的参数, 不过, 这些参数被分成了两种不同的类型。字符串()返回值()方法返回的是经过格式化处理的字符串数据。字符串()如何工作它读取参数的类型, 并且根据格式代码对传入的内容执行格式化操作, 这里的参数是从外部接收到的。对于位置参数在这里面, 第0个参数是字符串“Adam”, 第1个参数是浮点数230.2346。请注意这样一个情况, 关于参数所构成列表的相关起始点位置应当从数值零作为开端进行计算。这个被叫做“Hello {0}, your is {1:9.3f}”的字符串, 它属于一种通常称作模板字符串的东西, 这里面头包含了专门用来搞格式处理的一些格式代码。花括号这个东西, 它其实就是, 用来放置那个参数的一个占位标记。在你给出的上面那个例子当中。首先, {0}就是“Adam”这个字串所对应的那个占位符。其次呢, {1:9.3f}它就是数字230.2346所对应的那个占位符。因为模板字符串是通过包括括号在内的方式对参数进行引用的, 例如使用{0}和{1}这样的形式, 所以这些被引用的参数被视为位置参数。另外, 如果在引用参数的时候不使用具体的数字, 而是直接使用{}这种方法的话, 系统也可以在内部将这些空大括号转换成对应的数字索引来实现参数的定位。在内部的地方里。对于关键字参数从上面的演示中, 我们使用了完全一样的例子, 其目的在于清晰地展现出关键字参数与位置参数这两者之间具体的差别。在这个地方, 咱们不光是在用参数, 同时也把键值当成了参数来使用。也就是像 nameAdam 和 blc230.2346 这样的形式。因为参数是通过键名{name}和格式化的数字{blc:9.3f}来进行引用的, 所以这些内容会被被称为关键字, 也会被称为命名参数。在内部在使用()的时候, 要遵循那种基本的格式。()方法允许使用简单的占位符进行格式化。在通常情况下, 位置和关键字参数的基本格式是默认存在的。# 默认参数print(Hello {}, your balance is {}..format(Adam, 230.2346))# 位置参数print(Hello {0}, your balance is {1}..format(Adam, 230.2346))# 关键词参数print(Hello {name}, your balance is {blc}..format(nameAdam, blc230.2346))# 混合参数print(Hello {0}, your balance is {blc}..format(Adam, blc230.2346))当你把程序给运行起来的时候, 所有的输出内容都将会一样, 并且都是一样的情况。Hello Adam, your balance is 230.2346.Hello Adam, your balance is 230.2346.Hello Adam, your balance is 230.2346.Hello Adam, your balance is 230.2346.这里需要大家注意一个情况, 就是混合参数这个事儿, 其中关键字参数, 必须是要跟着位置参数之后的。使用()格式化数字您这边呢, 是可以使用下文中所提供的那个格式说明符的方式来进行数字格式的设置的。数字格式类型, 这个类型的含义是什么。小数整数对应的字符二进制格式八进制格式以十六进制这种形式的写法进行呈现。采用大写格式的十六进制表示法。这和“ d”是一样的。除了用了数字分隔符的那个当前地区设置方面有所不同之外, 其他地方都是一样的。这指的是那种使用一个小写字母e来代表的指数表示方法。表示指数的符号, 也就是那个大写的E字母。显示那个定点的编号, 默认的数值是六。它和“ f”是相同的。唯一的不同点是, 在显示结果时, 把 inf写成 INF, 而 nan写成NAN, 就是这么回事。采用通用格式, 将数字进行四舍五入的处理, 最终保留p个有效数字, 默认的精度设定为6。这种情况和“g”是相同的。要是数量特别巨大, 就把之前的情况拿掉, 然后切换到“E”。它是通过将数值乘以一百并且使用百分号作为结束标识来表达的。这个内容展示的是, 一个简单的关于数字方面的格式。# 整数参数print(数字:{:d}.format(123))# 浮点参数print(浮点数:{:f}.format(123.4567898))# 八进制二进制和十六进制格式print(bin: {0:b}, oct: {0:o}, hex: {0:x}.format(12))当您去运行这个程序的时候, 输出的结果将会是。数字: 123浮点数:123.456790bin: 1100, oct: 14, hex: c示例3用int和float填充数字格式# 最小宽度的整数print({:5d}.format(12))# 宽度对于比填充更长的数字不起作用print({:2d}.format(1234))# 浮点数的填充print({:8.3f}.format(12.2346))# 最小宽度为0的整数print({:05d}.format(12))# 填充用0填充的浮点数print({:08.3f}.format(12.2346))当您运行该程序时输出将是121234 12.235000120012.235这里示例4带符号数字的数字格式# 显示号print({:f} {:f}.format(12.23, -12.23))# 仅显示-号print({:-f} {:-f}.format(12.23, -12.23))# 显示号的空格print({: f} {: f}.format(12.23, -12.23))当您运行该程序时输出将是12.230000 -12.23000012.230000 -12.230000 12.230000 -12.230000让数字的格式变得一致。当你把数字设置成某个特定的宽度的时候, 那个等于号。将数字格式的类型与它所代表的含义进行对齐。左对齐剩余空间中心对齐剩余空间与剩余空间右对齐把这个带有一种叫做加号的符号, 还有一种叫做减号的符号, 强制地挪动到最左边的位置去。将数字格式进行设置, 其中包括左对齐, 右对齐和居中对齐。# 右对齐的整数print({:5d}.format(12))# 具有中心对齐的浮点数print({:^10.3f}.format(12.2346))# 整数左对齐用0填充print({:05d}.format(12))# 中心对齐的浮点数print({:8.3f}.format(-12.2346))当您运行该程序时输出将是12 12.235 12000- 12.235请注意, 在第三个例子里面, 如果左对齐并且使用零填充的方式来处理整数, 这可能会导致出现问题, 所以该示例的返回结果变成了12000, 而不是正确的12。使用()进行字符串格式化作为数字, 可以使用()以类似的方式对字符串进行格式化。示例6带填充和对齐的字符串格式# 左对齐的字符串填充print({:5}.format(cat))# 右对齐的字符串填充print({:5}.format(cat))#中心对齐的字符串填充print({:^5}.format(cat))# 中心对齐的字符串填充# 和 * 填充字符print({:*^5}.format(cat))当您运行该程序时输出将是cat cat cat *cat*在使用括号进行字符串截断的这个过程里面。# 将字符串截断为3个字母print({:.3}.format(caterpillar))# 将字符串截断为3个字母# 和 填充print({:5.3}.format(caterpillar))# 将字符串截断为3个字母,# 填充和中心对齐print({:^5.3}.format(caterpillar))当您运行该程序时输出将是catcat cat是使用()来对格式化类和字典成员进行处理。在类的成员变量那里, 是用“.强age示例8使用()格式化类成员# define Person classclass Person:age 23name Adam# 格式化ageprint({p.name}年龄是 : {p.age}.format(pPerson()))当您运行该程序时输出将是Adams 年龄是 : 23此时, 该对象被作为关键字参数p传递给了某个函数或方法。在模板字符串里面, 我们分别使用了.name和.age来访问name和age。采取运用括号来进行格式化操作, 以针对字典里面的各个成员。# 定义Person字典person {age: 23, name: Adam}# 格式化ageprint({p[name]}s age is: {p[age]}.format(pperson))当您运行该程序时输出将是Adams age is: 23这个操作和class是一样的, 因为字典会被当做是p的参数的关键字传递给那个函数。在模板字符串这里, 你分别拿那个访问人员所具备的名字属性还有年龄属性来进行使用。其实, 还有一种更简单的方法可以使用格式化的字典字符串str.()。# 定义Person字典person {age: 23, name: Adam}# 格式化ageprint({name}s age is: {age}.format(**person))是一个用于设定的最小字段宽度的参数。我们可以将作为格式代码里的参数来使用。你这边还能够去动态地把那个格式代码给传进去, 比方说精度怎么样, 对齐方式是什么样子, 填充字符又用的是哪一个, 这些都可以通过位置参数的方式去弄, 你也可以通过关键字参数的形式去搞。示例10使用()的动态格式化# 动态字符串格式模板string {:{fill}{align}{width}}# 将格式代码作为参数传递print(string.format(cat, fill*, align^, width5))# 动态浮点格式模板num {:{align}{width}.{precision}f}# 将格式代码作为参数传递print(num.format(123.236, align, width8, precision2))运行该程序时输出为**cat**123.24这里带有()的其他格式选项它还能够支持那些专门针对特定类型所提供的设置样式方面的选项, 其中就包括了像日期时间格式这样的一种情况, 同时也涵盖了复数格式这一类的情形。()内部是从()进行调用的, 并且( )是去访问复数的属性的。您可以去把任何一个对象的()方法拿来进行重写, 这么做的原因, 是为了能够实现那种属于用户自己的自定义化的格式设置方面的操作。示例11使用()和重写 __()方法的特定于类型的格式化import datetime# 日期时间格式date datetime.datetime.now()print(当前时间: {:%Y/%m/%d %H:%M:%S}.format(date))# 复数格式complexNumber 12jprint(Real part: {0.real} and Imaginary part: {0.imag}.format(complexNumber))# 自定义 __format__()方法class Person:def __format__(self, format):if(format age):return 23return Noneprint(Adams 年龄是: {:age}.format(Person()))运行该程序时输出为当前时间: 2020/04/17 14:33:02Real part: 1.0 and Imaginary part: 2.0Adams 年龄是: 23这里您还能够利用括号进行简化书写操作, 借此方式来分别调用对象这一方法以及函数方法。这就像__()那样, 您也可以很方便地去重新编写对象的__str __()方法还有()这个方法。示例十二是使用()的__()__和(__)简写分别为(!r和!s)。# __str__() 和 __repr__() 简写为 !r 和 !sprint(Quotes: {0!r}, Without Quotes: {0!s}.format(cat))# __str__() 和 __repr__() 实现类class Person:def __str__(self):return STRdef __repr__(self):return REPRprint(repr: {p!r}, str: {p!s}.format(pPerson()))运行该程序时输出为Quotes: cat, Without Quotes: catrepr: REPR, str: STR字符串方法列表方法 字符串方法
返回列表