前言:
眼前姐妹们对“python输出字符”大体比较关注,我们都需要知道一些“python输出字符”的相关资讯。那么小编同时在网络上收集了一些对于“python输出字符””的相关资讯,希望我们能喜欢,同学们一起来学习一下吧!Python字符串格式化输出,在python编程中,是一个非常重要的知识点,掌握了它,你就可以输出各种格式要求的文本内容,并生成相关要求的文件。下面介绍Python格式化字符串的四种方式,并给出了比较详尽的参数说明和举例,希望能够帮助到大家,以下是详细的内容:
一、%号
这是最早的字符格式化方法。字符串格式化使用与 C语言 中 sprintf 函数一样的语法。如果您没有使用过C语言,也没有关系,看看下面的表格参数的描述和例子也就明白了。
基本语法是:字符串 % ()
python字符串格式化符号:
符 号
描述
%c
格式化字符及其ASCII码
%s
格式化字符串
%d
格式化整数
%u
格式化无符号整型
%o
格式化无符号八进制数
%x
格式化无符号十六进制数
%X
格式化无符号十六进制数(大写)
%f
格式化浮点数字,可指定小数点后的精度
%e
用科学计数法格式化浮点数
%E
作用同%e,用科学计数法格式化浮点数
%g
%f和%e的简写
%G
%f 和 %E 的简写
%p
用十六进制数格式化变量的地址
格式化操作符辅助指令:
符号
功能
*
定义宽度或者小数点精度
-
用做左对齐
+
在正数前面显示加号( + )
<sp>
在正数前面显示空格
#
在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0
显示的数字前面填充'0'而不是默认的空格
%
'%%'输出一个单一的'%'
(var)
映射变量(字典参数)
m.n.
m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
注:默认是右对齐。
1、按照顺序格式化字符串
当需格式化的字符串或者数字过多时,位置搞混估计有很大的可能。举例如下:
a = '张三'
b = '李四'
c = 3.1415926
print('%s和%s是兄弟!π=%5.2f' % (a, b , c)) # 张三和李四是兄弟!π= 3.14
print("%s和%s是兄弟!π=%5.2f" % ("张三", '李四', 3.14151926)) # 张三和李四是兄弟!π= 3.14
2、通过字典方式格式化字符串
通过字典方式格式化,打破了位置带来的限制与困扰。
如:%4d格式化数据,输出整数位4位,右对齐数字不足用空格代替。
print("我叫%(name)s,年龄%(age)4d岁" % {"name": '张三', "age": 20}) # 我叫张三, 年龄 20岁
kwargs = {"name": "张三", "age": 18}
print("我叫%(name)s, 年龄%(age)d岁" % kwargs) # 我叫张三, 年龄18岁
二、str.format 函数
format函数,它增强了字符串格式化的功能。str.format的格式化字符串的方式比%在性能和灵活性上要好很多。好处是format 函数可以接受不限个数的参数,而且位置可以不按顺序。
基本语法是通过 {} 和 : 来代替前面的 % 。
1、使用位置参数格式化
按照位置一一对应,这一点和%一样。
print("{}和{}是好朋友!".format('张三', '李四')) # 张三和李四是好朋友!
2、使用数字索引格式化
使用索引取对应位置的值,这是位置可以任意,按照需要排列。
print('{0}{0}{1}{0}'.format('张三', '李四')) # 张三张三李四张三
3、使用关键字参数格式化
通过关键字的方式格式化,打破了位置带来的限制与困扰。这一点也和%类似。
print("我叫{name}, 年龄{age}岁。".format(age=18, name="张三"))
4、使用字典格式化
通过字典方式的方式格式化,也能达到关键字参数的效果。
kwargs = {'name': '张三', "age": 18}
print("我叫{name}, 年龄{age}岁。".format(**kwargs)) # 使用**进行解包操作
注意:**kwargs,使用**进行解包操作,这点非常重要。新手容易不写**,而程序报错。
5、字符格式化
先取到值(使用数字索引),然后在冒号后面设定填充格式:[填充字符][对齐方式][宽度]
^, <, > 分别是居中、左对齐、右对齐。后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
需要注意的是,每个汉字算一个字符。这一点和C语言不一样的,C语言中,一个汉字计算为2个字符。举例如下:
#*<20: 意思是: 左对齐,总共20个字符,不足部分用*号填充
print("我叫{0:*<20},年龄 {1:*<10}岁!".format("张三", 18)) # 我叫张三******************,年龄 18********岁!
# *>10: 右对齐,总共10个字符,不足部分用*填充
print("我叫{0:*<10}".format("张三")) # 我叫张三********
# *^18: 居中,总共18个字符,不足部分用*填充
print("我叫{0:*^18}".format("张三")) # 我叫********张三********
# ^20: 居中,总共20个字符,不足部分用空白填充
print("我叫{0:^20}".format("张三")) # 我叫 张三
6、数字格式化
数字
格式
输出
描述
3.1415926
{:.2f}
3.14
保留小数点后两位
3.1415926
{:+.2f}
+3.14
带符号保留小数点后两位
-1
{:-.2f}
-1.00
带符号保留小数点后两位
2.71828
{:.0f}
3
不带小数
5
{:0>2d}
05
数字补零 (填充左边, 宽度为2)
5
{:x<4d}
5xxx
数字补x (填充右边, 宽度为4)
10
{:x<4d}
10xx
数字补x (填充右边, 宽度为4)
1000000
{:,}
1,000,000
以逗号分隔的数字格式
0.25
{:.2%}
25.00%
百分比格式
1000000000
{:.2e}
1.00e+09
指数记法
13
{:>10d}
13
右对齐 (默认, 宽度为10)
13
{:<10d}
13
左对齐 (宽度为10)
13
{:^10d}
13
中间对齐 (宽度为10)
11
'{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11)
1011
11
13
B
0xb
0XB
进制
^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
+ 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格
b、d、o、x 分别是二进制、十进制、八进制、十六进制。
举例如下:
# 123456.12精确到小数点后2位,四舍五入
print("{temp:.2f}".format(temp=123456.1234567))
# 123456.1234567890精确到小数点后10位,四舍五入
print("{temp:.10f}".format(temp=123456.1234567))
# ---3.14--- 取2位小数后,居中,共10位,其余用-填充
print("{:-^10.2f}".format(3.1415926))
# 1111011 转成二进制
print("{0:b}".format(123))
# 1,234,567 千分位格式化
print("{0:,}".format(1234567))
需要注意的是:如果字符串里出现大括号 {} ,可以通过重复的方法,使用大括号 {} 来转义大括号。
举例如下:
#张三对应的位置是{0}
print ("{}对应的位置是{{0}}".format("张三"))
三、f-Strings
f-Strings称之为格式化字符串常量(formatted string literals)以F或者f开头,后面跟字符串,在字符串中,以大括号 {} 标明被替换的字段,将变量或表达式计算后的值替换进去。f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。
f-string是以f或F开头的字符串,这样表达非常简练。
1、{}中可以是变量名
name = '张三'
print(f"我叫{name}") # 我叫张三
2 、{}中可以是表达式
在{}中放置任意合法的表达式,会在运行时计算。
print(f"{3 * 3 / 2}") # 4.5
a = 1
b = 2
print(f"a + b = {a + b}") # a + b = 3
3、{}中可以调用函数
name = 'zhangsan'
print(F"我叫{name.upper()}") # 我叫ZHANGSAN
name = '张三'
print(F"我叫{len(name)}") # 我叫2
注意汉字'张三'的长度是2,而不是4。
def test(n):
return n
print(F"{test(10)}") # 10 执行时打印函数的返回值
需要注意的是:
(1)在{}中使用‘或者”,保证{}内外使用的不一样即可。
(2)在{}中需要同时使用’和“,则需要外部字符串使用文档字符串符号三个单引号或者三个双引号。
(3){}中不允许出现\即使作为函数参数;必须使用的话,可以采用将包含\的内容赋值到一个变量里,然后再使用这个变量进行格式化输出。
(4)f.string 格式可用于多行字符串,其方法和长字符串的表达是一样的。
四、string模块的template
这是string模块提供的一个模版类,默认使用$ 或者 ${}(建议用这个)来占位,而不是用%,具体用法如下:
首先是引用库:
from string import Template
s = 'hi!${name}'
res = Template(s).substitute(name='张三') # substitute替代的意思
print(res) # hi!张三
需要注意的是:
(1)当需要输出一个$符号时,可以使用$$,也就是重复一下。
(2)当格式化字符串中有变量未给出值时,使用safe_substitute函数,此函数将占位符当成字符串输出,如果使用substitute会报错
五、小结
(1)str.format() 比%格式化高级了一些。但是它还是有自己的缺陷。当需要传入的字符串过多时,仍然会显得非常冗长。str.format更简洁,性能上比%也更胜一筹。
(2)f-strings,不仅str.format更简洁,性能上也更胜一筹。
(3)f-string在功能方面不逊于传统的%语句和str.format()函数,同时性能又优于两者,且使用起来也更加简洁明了,因此推荐使用f-string进行字符串格式化。
(4)注意使用环境是python 3.6及以上。
(5)string模块提供的模版类,是另外一种字符串格式化输出的方法。
标签: #python输出字符 #python打印字符串最后一个字符 #python输出最后两个字符 #python输出最后一个字符 #python汉字字符举例