Python(8)--字符串格式化

字符串:

  所有标准序列操作(索引、切片、乘法、成员资格检查、长度、最小值和最大值)都适用于字符串,但别忘了字符串是不可变的,因此所有的元素赋值和切片赋值都是非法的。



字符串格式化:format方法

  每个值都被插入字符串中,用来替用花括号括起来的替换字段

  替换字段由下面的部分组成:

  字段名:索引或者标识符,指出要设置哪个值的格式,并使用结果来替换该字段;还可以指定值的特殊部分,如列表内的元素

  转换标志:跟在感叹号后面的单个字符。支持的字符包括:r(表示repr)、s(表示str)、a(表示ascii)。如果指定了转换标志,就不会用对象本身的格式,而是用指定函数将对象转换成字符串,然后进行格式设置

  格式说明符:跟早冒号后面的表达式。让我们能详细的指定最终的格式,包括:格式类型、字段宽度、数的精度、如何显示符号、千位分隔符、各种对齐和填充方式



替换字段名:  

  向format提供要设置格式的未命名参数,并在格式字符串中使用,会按顺序将字段和参数配对

  可以给参数指定名称,该参数会对应在格式字符中的字段

>>> "{foo}{}{bar}{}".format(1, 3, bar="a", foo=5)
‘51a3‘

  可以通过索引来指定要在哪个字段中使用相应的未命名参数,这样就可以不按顺序使用未命名参数

>>> "{foo}{1}{bar}{0}".format(1, 3, bar="a", foo=5)
‘53a1‘

  可以使用提供值中的一部分部分

>>> f = ["hello", "world"]
>>> "hi {foo[1]}".format(foo=f)
‘hi world‘

  可以使用句点来使用导入模块中的方法、属性、变量、函数(__name__获取指定模块的名称)

>>> import math
>>> tmp = "The {mod.__name__} module defines the value {mod.pi} for π"
>>> tmp.format( mod=math)
‘The math module defines the value 3.141592653589793 for π‘

  



基本转换:

   使用转换标志设置值的格式

>>> print("{pi!s} {pi!r} {pi!a}".format(pi="π"))
π ‘π‘ ‘\u03c0‘

# s:str,将值创建为人易读的普通字符串
# r:repr,将值创建成给定的Python表达式
# a:ascii,创建ascii字符的表示

  将要转换的值视为哪种类型,比如一个整数,但是要作为小数处理,就在冒号后面加上:f。要当做二进制处理就加上:b

>>> "This number is {num}".format(num=33)
‘This number is 33‘
>>> "This number is {num:f}".format(num=33)
‘This number is 33.000000‘
>>> "This number is {num:b}".format(num=33)
‘This number is 100001‘

  在冒号(格式说明符)后面使用类型说明符,类型说明符有:

b                # 将整数表示为二进制数
c                # 将整数解读为Unicode码点
d                #将整数视为十进制数进行处理,这是整数默认使用的说明符
e                # 使用科学计数法来表示小数(e表示指数)
E                # 与e相同,但是使用E来表示指数
f                # 将小数表示为定点小数
F                # 与f相同,但是对于特殊值(nan和inf),使用大写表示
g                #自动在定点表示和科学计数表示之间做出选择;这是默认用于小数的说明符,默认情况下至少有一位小数
G                #与g相同,但使用大写来表示指数和特殊值
n                # 与g相同,但插入随区域而异的数字分隔符
o                # 将整数表示为八进制数
s                # 保持字符串的格式不变,默认用于字符串的说明符
x                # 将整数表示为十六进制数并使用小写字母
X                # 与x相同,但使用大写字母
%                # 将数表示为百分比值(乘以100,按说明符f设置格式,再在后面加上%)

  



宽度:

  宽度使用整数指定

>>> "{num:10}".format(num=3)
‘         3‘
>>> "{name:10}".format(name="bone")
‘bone      ‘

# 可见数字是右对齐进行空位填充,字符串是左对齐进行填充

 



精度:

  设置浮点数格式默认保留6位小数,要更改序要设置精度

  精度使用整数指定,要在整数前面加上句点号:.

>>> "This number is {num:.2f}".format(num=33.345678)
‘This number is 33.35‘

# 可以同时指定宽度和精度
>>> "This number is {num:10.2f}".format(num=33.345678)
‘This number is      33.35‘

  



千位分隔符:

  使用逗号添加

>>> "number is {:,}".format(10**100)
‘number is 10,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000‘

  同时指定其他格式设置时,逗号要放在表示宽度和表示精度的句点之间

 "number is {:12.2f}".format(99999999)
‘number is  99999999.00‘
>>> "number is {:12,.2f}".format(99999999)
‘number is 99,999,999.00‘

  



对齐和填充:

  字符串和数字默认的对齐方式不同,若要修改对齐方式,可以在指定宽度和精度的数前面添加一个标志

# 左对齐:<
# 右对齐:>
# 居中:^
>>> print("{0:<10.2f}\n{0:>10.2f}\n{0:^10.2f}".format(3.1415926))
3.14
      3.14
   3.14

  可以指定填充字符来替代默认的空格

>>> "{:#^16}".format("go")
‘#######go#######‘

  等于号:=;用来将填充的字符放在符号和数字之间

>>> "{:=16.2f}".format(-3.1415)
‘-           3.14‘
>>> "{:#=16.2f}".format(-3.1415)
‘-###########3.14‘

  给正数加上说明符,放在对齐说明符后面

# 默认设置,符号是:-
>>> print("{0:.2}\n{1:.2}".format(3.1415, -3.1415))
3.1
-3.1
>>> print("{0:-.2}\n{1:-.2}".format(3.1415, -3.1415))
3.1
-3.1

# 改为+号
>>> print("{0:+.2}\n{1:+.2}".format(3.1415, -3.1415))
+3.1
-3.1

# 指定为空格
>>> print("{0: .2}\n{1: .2}".format(3.1415, -3.1415))
 3.1
-3.1

  井号:#;将其放在符号说明符和宽度之间,将处罚一种转换方式,随类型而异

# 对于二进制、八进制、十六进制会加前缀
>>> "{:b}".format(42)
‘101010‘
>>> "{:#b}".format(42)
‘0b101010‘

# 对于十进制,必须包含小数点(g类型保留小数点后的0)
>>> "{:g}".format(42)
‘42‘
>>> "{:#g}".format(42)
‘42.0000‘

  



Python(8)--字符串格式化

原文地址:https://www.cnblogs.com/Mr-chenshuai/p/10013208.html

时间: 2024-08-04 23:56:10

Python(8)--字符串格式化的相关文章

Python基础-字符串格式化_百分号方式_format方式

Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator. 1.百分号

python(七)字符串格式化、生成器与迭代器

字符串格式化 Python的字符串格式化有两种方式:百分号方式.format方式 1.百分号的方式 %[(name)][flags][width].[precision]typecode (name)      可选,用于选择指定的key flags          可选,可供选择的值有: +       右对齐:正数前加正好,负数前加负号: -        左对齐:正数前无符号,负数前加负号: 空格    右对齐:正数前加空格,负数前加负号: 0        右对齐:正数前无符号,负数前

Python学习-字符串格式化

Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. 1.百分号方式 格式化字符串时,Python使用一个字符串作为模板.模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式.Python用一个tuple将多个值传递给模板,每个值对应一个格式符. 比如下面的例子: print("I'm %s. I'm %d year old" % ('Vamei',

Python的字符串格式化

Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator. 1.百分号

python中字符串格式化%与.format

Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator. 1.百分号

Python中字符串格式化如何实现?

Python开发中字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator. 1.百分号方式 %[(na

Python之字符串格式化

Python目前提供的字符串格式化方式有两种: 百分号方式 format方式 这两种方式在Python2和Python3中都适用,百分号方式是Python一直内置存在的,format方式为近期才出来的. 旧式%格式化 参数格式 %[(name)][flags][width].[precision]typecode [(name)] 可选,用于选择指定的key [flags] 可选,可供选择的值有: 值 说明 + 右对齐:正数前加正好,负数前加负号 - 左对齐:正数前无符号,负数前加负号 spac

python format字符串格式化、数学意义的函数与python中的函数 day14

format字符串格式化,必须一一对应 tpl = 'i am {}, age{},{}'.format('seven',18,12) print(tpl) tpl = 'i am {1}, age{2},{2}'.format('seven',18,12) print(tpl) 取元组第一个 tpl = 'i am {0[0]}',format([1,2,3],[123]) python 中函数定义方法: def test(x): 'The function definitions'#注释函数

Python第六天(字符串格式化表达式)

字符串格式化表达式 格式化字符串 在%操作符的左侧放一个需要进行格式化的字符串,以%开头 在%操作符的右侧放一个对象,这些对象就是左边进行格式化字符串转换的字符 >>> 'I am %s I am %d old!' % ('wuang',22) 'I am wuang I am 22 old!' 字符串格式化代码 s 字符串 rs,使用repr,不是str c 字符 d 十进制 i整数 u 无号 o  八进制 x 十六进制 Xx,打印大写 e 浮点指数 E e,打印大写 f  浮点十进制

Python:字符串格式化

字符串格式化: 字符串格式化: %: %s 格式化为字符串 [html] view plain copy >>> format = "Hello, %s. %s enough for ya?" >>> values = ('world', 'Hot') >>> print format % values Hello, world. Hot enough for ya? %f 格式化为实数(浮点数) [html] view plain