Python格式字符串的三种方法你都掌握了吗,%s%d%f+format()+f-string,深度测评YYDS实至名归

简介: Python格式字符串的三种方法你都掌握了吗,%s%d%f+format()+f-string,深度测评YYDS实至名归

在这里插入图片描述

前言: 在我们日常的学习中,我们总是免不了和各种输入输出打交道,而在这其中输出更是重中之重,有时候就因为输出的格式不对,或者说语法用的不正确,往往会导致最后的结果不尽如人意。以及各种输出的奇葩要求往往搞的我们头大,那今天就由Dream带大家来实际测评和总结一下各种格式化字符串方法吧,赶快为你喜欢的方法种草吧~
@TOC

一、%s%d%f方法

简单而言在python2.5版本之前,我们使用的都是最原始的格式化方法%s,而这种方法也是目前为止我们最常用的方法,简单又方便。让我们来看一下他的具体用法:

1.标志性符号

当我们看到输出语句存在 %d,%s,%f等百分号的时候 ,这便是我们所说的第一种%方法。
Python 支持字符串格式化输出,尽管这样可能遇到非常复杂的表达式,但最基本的是用法就是将一个值插入到一个有字符串格式符%s的字符串中
例1: 输入:

name = '是Dream呀'
print('Hello,大家好,我叫%s'%name)

输出:

Hello,大家好,我叫是Dream呀

这里大家要注意,字符串和变量中间要用%连接,不可以用‘,’进行连接'Hello,大家好,我叫%s',name,如果这样连接就直接相当于把变量在字符串之后进行输出啦。
例2: 输入:

name = '是Dream呀'
print('Hello,大家好,我叫%s',name)

输出:

Hello,大家好,我叫%s 是Dream呀

2.输出数据类型

在程序中,看到%s这样的操作符,这就是python中字符串格式化的符号。除此之外,还可以用%符号对其他类型的数据进行格式化。常见的格式化符号如下:

  • %s 通过str()字符串转换来格式化
  • %f 浮点实数
  • %d 有符号的十进制整数

3.%10s %-10s %.10s用法

(1)%10s

%10s代表输出宽度为10个字符,如果输出的字符串不超过10,则在左边补空格;宽度超过10,按原长度输出。
例3: 输入:

string = '12345'
print("123456789ABCDEFGHI")
print("%10s" %string) 

输出:

123456789ABCDEFGHI
     12345

(2)%-10s

和上面的%10s相反,如果输出的字符串宽度不超过10,则在右边补齐空格;宽度超过10,按原长度输出。
例4: 输入:

string = '12345'
print("123456789ABCDEFGHI")
print("%-10s" %string + "aaaaa")  # 长度未超过10,右边补齐
print("%-3s" %string + "aaaaa")  # 长度超过3,原样输出

输出:

123456789ABCDEFGHI
12345     aaaaa
12345aaaaa

(3)%.10s

%.10s表示截取前10个字符,若原长度不够10,则原样输出。
例5: 输入:

string = '12345'
print("123456789ABCDEFGHI")
print("%.3s" %string) #原长度超过3,截取前3个字符
print("%.10s" %string)#原长度不够10,原样输出
123456789ABCDEFGHI
123
12345

(4)%10.3s

这种格式化字符串要分成两部分来看,先运行右边的".3"部分,即先截取3个字符;再运行左边的"10"部分,即上面“1”中提到的功能。具体见下面的例子:
例6: 输入:

string = '12345'
print("123456789ABCDEFGHI")
print("%10.3s" %string)      # 先截取3个字符("123"),由于长度不足10,左边补7个空格
print("%10.7s" %string)      # 先截取7个字符("12345"),由于长度不足10,左边补5个空格
print("%2.3s" %string)       # 先截取3个字符("123"),由于长度超过2,原样输出
123456789ABCDEFGHI
       123
     12345
123

4.%d %2d %02d %-2d% %.2d的区别

%d就是普通的输出了整形数

%2d是将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格。
%02d,和%2d差不多,只不过左边补0

%-2d将数字按宽度为2,采用左对齐方式输出,若数据位数不到2位,则右边补空格
%.2d 输出整形时最少输出2位,如不够前面以0占位。如输出2时变成02,200时只输出200;输出浮点型时(%.2f)小数点后强制2位输出
例7: 输入:

num = 1
print("%d" % (num))
print("%2d" % (num))
print("%02d" % (num))
print("%-2d" % (num))
print("%.2d" % (num))
print("%.2d" % (200))
1
 1
01
1 
01
200

5.%f详解

(1)%f

%f时表示原值,默认是小数点后5位数
例8: 输入:

import math
print('%f'%math.pi)
3.141593

(2)%9f

只是%9f时,表示打印长度9位数,小数点也占一位,不够左侧补空格
例9: 输入:

import math
print('%f'%math.pi)
print('%9f'%math.pi)
3.141593
 3.141593

(3)03.f

只有.没有后面的数字时,表示去掉小数输出整数,03表示不够3位数左侧补0
例10: 输入:

import math
print('%f'%math.pi)
print('%.f'%math.pi)
print('%03.f'%math.pi)
3.141593
3
003

(4)%6.3f

%6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够左侧补空格
例11: 输入:

import math
print('%f'%math.pi)
print('%6.3f'%math.pi)
3.141593
 3.142

(5)%-6.3f

%-6.3f表示小数点后面精确到3位,总长度6位数,包括小数点,不够右侧补空格
例12: 输入:

import math
print('%f'%math.pi)
print('%-6.3f'%math.pi)
3.141593
3.142     

二、format()方法

从python3.0版本开始起(python2.6同期发布),Python中同时支持两个版本的格式化,多出来的一个新版本就是利用format()函数,进行格式化输出。

1.无参(1)

例13: 输入:

print('{} {}'.format('hello','world'))
hello world

2.无参(2)

例14: 输入:

print('{0} {1}'.format('hello','world'))
world hello

3.无参(3)

例15: 输入:

print('{1} {0} {1}'.format('hello','world'))
world hello world

4.key value

例16: 输入:

print('ID:{id},Name:{name}'.format(id='001',name='hello'))
ID:001,Name:hello

5.列表

例17: 输入:

list=['001','hello']
print('ID:{List[0]},Name:{List[1]}'.format(List = list))
print('ID:{0[0]},Name:{0[1]}'.format(list))
ID:001,Name:hello
ID:001,Name:hello

6.字典

例18: 输入:

dict={'id':'001,'name':'hello'}
print('ID:{Dict[0]},Name:{Dict[1]}'.format(Dict = dict))
print('ID:{id},Name:{name}'.format(**dict))
ID:001,Name:hello
ID:001,Name:hello

7.类

例19: 输入:

class value():
    id = '001'
    name = 'hello'
print('ID:{Value.id},Name{Value.name}'.format(Value = value))
ID:001,Name:hello

8.数字格式化

  • 3.1415926 {:.2f} 3.14 保留小数点后两位
  • 3.1415926 {:+.2f} +3.14 带符号保留小数点后两位
  • -1 {:+.2f} -1.00 带符号保留小数点后两位

9.格式总结

第一种方式:固定形式的格式化填充,给的顺序和填充顺序完全一致。
例20: 输入:

b1 = "四大天王:{}、{}、{}、{}".format("是Dream呀","郭富城","张学友","黎明")
print(b1)
四大天王:是Dream呀、郭富城、张学友、黎明

第二种方式:大括号{ }中写的是format()传入值所对应的下标。
例21: 输入:

b2 = "四大天王:{2}、{0}、{3}、{1}".format("刘德华","郭富城","张学友","黎明")
print(b2)

第三种方式:大括号{ }中的变量,和format()传入值是一一对应的。
例22: 输入:

x1 = "刘德华"
x2 = "郭富城"
x3 = "张学友"
x4 = "黎明"
b3 = "四大天王:{p}、{q}、{r}、{s}".format(p=x4,q=x2,r=x1,s=x3)
print(b3)

三、f-string方法

python3.6版本后,又引入了一种新的字符串格式化方式f-string。从%s格式化到format格式化再到f-string格式化,格式化的方式越来越直观,f-string的效率也较前两个高一些,使用起来也比前两个更简单一些。
f-string格式化:占位符{},搭配f符号一起使用

简单使用

f-string用大括号 {} 表示被替换字段,其中直接填入替换内容:
例23: 输入:

name = '是Dream呀'
print('Hello, my name is {name}'.format(name=name))
print(f'Hello, my name is {name}')
Hello, my name is 是Dream呀
Hello, my name is 是Dream呀

例24: 输入:

import datetime
name = '是Dream呀'
age = 20
date = datetime.date(2022,2,5)
print(f'my name is {name}, this year is {date:%Y},Next year, I\'m {age+1}')
# my name is 是Dream呀, this year is 2022,Next year, I'm 21

其余的方法也都和format()函数方法一致,大家自行参考即可。

总 结 种 草

python最先的格式化字符串方法是%,但他的致命缺点是支持的类型有限。format()比较全面,而format()中有的f-string基本都有,而且更简单,所以说一般来说用f-string,除非特殊情况下format()。

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~
在这里插入图片描述
在这里插入图片描述

目录
相关文章
|
2月前
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
|
2月前
|
数据处理
鸿蒙开发:ArkTs字符串string
字符串类型是开发中非常重要的一个数据类型,除了上述的方法概述之外,还有String对象,正则等其他的用处,我们放到以后得篇章中讲述。
120 19
|
2月前
|
SQL 数据库
【YashanDB 知识库】导入数据时报错:YAS-00008 type convert error:literal does not match format string
【YashanDB 知识库】导入数据时报错:YAS-00008 type convert error:literal does not match format string
|
7月前
|
存储 Java 索引
Python String详解!
本文详细介绍了Python中的字符串数据类型,包括其创建、访问、切片、反转及格式化等操作。文章涵盖字符串的基本概念、各种操作方法以及常用内置函数。通过多个示例代码展示了如何使用单引号、双引号和三重引号创建字符串,如何通过索引和切片访问与修改字符串内容,以及如何利用格式化方法处理字符串。此外,还介绍了字符串的不可变性及其在实际应用中的重要性。通过本文的学习,读者可以全面掌握Python字符串的使用技巧。
161 4
|
2月前
|
SQL 数据库
【YashanDB知识库】导入数据时报错:YAS-00008 type convert error:literal does not match format string
【YashanDB知识库】导入数据时报错:YAS-00008 type convert error:literal does not match format string
|
2月前
|
Java 程序员
课时16:String字符串
课时16介绍了Java中的String字符串。在Java中,字符串使用`String`类表示,并用双引号定义。例如:`String str = "Hello world!";`。字符串支持使用“+”进行连接操作,如`str += "world";`。需要注意的是,当“+”用于字符串与其他数据类型时,其他类型会先转换为字符串再进行连接。此外,字符串中可以使用转义字符(如`\t`、`\n`)进行特殊字符的处理。掌握这些基本概念对Java编程至关重要。
|
5月前
|
Python
Python格式
Python格式
54 5
|
7月前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
136 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
6月前
|
索引 Python
String(字符串)
String(字符串)。
135 3
|
6月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
152 1