Python中格式化字符串输出的4种方式

Python 字符串格式化输出【超详细】 详细说明 Python 的 4 种字符串格式化方法( format、f" "、"%d"%num、str.center ) 阅读详情
AI摘要

本文介绍了Python中四种字符串格式化方法:%号、str.format、f-Strings和string模块的Template,包括它们的使用方式、特点和应用场景。f-Strings是Python3.6引入的新特性,性能最优。文章还进行了性能测试,结果显示f-Strings效率最高。

Python格式化字符串的4中方式
一、%号
二、str.format(args)
三、f-Strings
四、标准库模板
五、总结四种方式的应用场景’

一、%号占位符

这是一种引入最早的一种,也是比较容易理解的一种方式.使用方式为:

1、格式化字符串中变化的部分使用占位符
2、变量以元组形式提供
3、变量与格式化字符串之间以%连接

1、格式的字符串(即%s)与被格式化的字符串(即传入的值)必须按照位置一一对应

ps:当需格式化的字符串过多时,位置极容易搞混

例如

a = 'zhangsan'
b = 'lisi'
print('%s eated %s' % (a, b))  # zhangsan eated lisi
print("%s asked %s to do something" % ("zhangsan", 'lisi'))  # zhangsan asked lisi to do something
2、可以通过字典方式格式化,打破了位置带来的限制与困扰
print("我的名字是%(name)s,我的年龄是%(age)s" % {"name": 'zhangsan', "age": "list"})  # 我的名字是zhangsan,我的年龄是list

kwargs = {"name": "zhangsan", "age": 18}
print("my name is %(name)s, my age is %(age)s" % kwargs)  # my name is zhangsan, my age is 18

二、str.format 内建函数

该format函数是在python2.6以后引入的,是字符吕类型的内置方法。因为str.format的方式
比%在性能和灵活性上更好一些。

1、使用位置参数

按照位置一一对应

print("{} and {} is good friedng".format('zhangsan', 'lisi'))  # zhangsan and lisi is good friedng
2、使用索引

使用索引取对应位置的值

print('{0}{0}{1}{0}'.format('哈哈', '隔'))  # 哈哈哈哈隔哈哈
3、使用关键字参数or字典

可以通过关键字or字典方式的方式格式化,打破了位置带来的限制与困扰

print('我的名字是 {name}, 我的年龄是 {age}.'.format(age=18, name='egon'))

kwargs = {'name': 'egon', 'age': 18}
print("my name is {name}, my age is {age}".format(age=18, name="zhangsan"))

kwargs = {'name': 'zhangsan', "age": 18}
print("my name is {name}, my age is {age}".format(**kwargs))  # 使用**进行解包操作
4、填充与格式化

先取到值,然后在冒号后面设定填充格式:[填充字符][对齐方式][宽度]
<20: 意思是: 左对齐,总共20个字符,不足部分用号填充

print("my name is {0:*<20},my age is {1:*<10}".format("zhangsan",
                                                      18))  # my name is zhangsan************,my age is 18********

# *>10: 右对齐,总共10个字符,不足部分用*填充
print("my name is {0:*<10}".format("zhangsan"))  # my name is zhangsan**

# *^10: 居中,总共18个字符,不足部分用*填充
print("my name is {0:*^18}".format("zhangsan"))  # my name is *****zhangsan*****

# ^20: 居中,总共20个字符,不足部分用空白填充
print("my name is {0:^20}".format("zhangsan"))  # my name is       zhangsan
5、精度与进制
print("{salary:.2f}".format(salary=123456.1234567))  # 123456.12精确到小数点后3位,四舍五入
print("{salary:.10f}".format(salary=123456.1234567))  # 123456.1234567890精确到小数点后3位,四舍五入
print("{:-^10.2f}".format(3.1415926))  # ---3.14--- 取2位小数后,居中,共10位,其余用-填充
print("{0:b}".format(123))  # 1111011 转成二进制
print("{0:o}".format(123))  # 173 转成八进制
print("{0:x}".format(123))  # 7b 转成十六进制
print("{0:,}".format(1234567))  # 1,234,567 千分位格式化

三、f-Strings

由python3.6版本引入的一个特性,称之为字面量格式化字符串
以F或者f开头,后面跟字符串,字符串中的表达式用大括号{}包起来,它会将变量或表达式计算后的值替换进去

​ f-string是以f或F开头的字符串, 核心在于字符串中符号{}的使用

1、{}中可以是变量名

name = ‘zhangsan’
print(f"my name is {name}") # my name is zhangsan

2 、{}中可以是表达式

可以在{}中放置任意合法的表达式,会在运行时计算

print(f"{3 * 3 / 2}")  # 4.5

a = 1
b = 2
print(f"a + b = {a + b}")  # a + b = 3

比如 函数的调用

name = 'zhangsan'
print(F"my name is {name.upper()}")  # my name is ZHANGSAN


def foo(n):
    print("zhangsan is beautifull")
    return n


print(F"{foo(10)}")  # 10  执行时打印函数的返回值

# 在{}中使用‘或者”  保证{}内外使用的不一样即可,如下
print(F'test {"str"}')  # teststr
print(F"test {'str'}")  # teststr

# 在{}中需要同时使用’和“,则需要外部字符串使用文档字符串符号’‘’或者”“”
name = 'zhangsan'
print(F'''it's name is "{name}" ''')  # it's name is "zhangsan"  注意各个’‘’是不一样的
print(F"{'{}'}")  # 输出{}  注意两种引号不一样

# {}中不允许出现\即使作为函数参数;必须使用的话,可以将包含\的内容放到一个变量里,如下
a = 'zhangsan'
b = f'my name is {a:-^10}'
print(b)  # my name is -zhangsan-

# a = f'print the {"\t"}'
# print(a)  # 语法错误

a = '\n'
print(F"print the {a}")  # print the   \n没有显示 但打印正常

# f.str 格式可用于多行字符串,有两种方式:使用连接符\  和使用doc签字串。如下
name = 'zhangsan '
age = 18

res = f'my name is {name},' \
      F"my age is {age}," \
      F"and i'm happy"

print(res)  # my name is zhangsan ,my age is 18,and i'm happy

res = f'''my name is {name} ,my age is {age},and i'm happy,
my name is {name} ,my age is {age},and i'm happy
my name is {name} ,my age is {age},and i'm happy
my name is {name} ,my age is {age},and i'm happy'''

print(res)  # 输出4行文本

四、string模块的template

这是string模块提供的一个模版类,默认使用$ 或者 ${}(建议用这个)来占位,而不是用%
具体用法如下

from string import Template

s = 'hi ${name}'
res = Template(s).substitute(name='zhangsan')  # substitute替代品的意思
print(res)  # hi zhangsan

# 当需要输出一个$符号时,可以使用$$
s1 = f'{name}‘s salary is $$1000'
res = Template(s1).substitute(name='zhangsan')
print(res)

# Template还有一个safe_substitute函数,
# 当格式化字符串中有变量未给出值时,此函数将占位符当成字符串输出,
# 而substitute会报错

name = 'zhangsan'

# s2 = f'{name} and {name2}‘s salary is $$1000'
# res = Template(s2).substitute()
# print(res)  #  报错NameError: name 'name2' is not defined
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:725638078

s3 = 'hi ${apple}, ${peach}'
res = Template(s3).safe_substitute(apple='apple')
print(res)  # hi apple, ${peach}

五、总结四种方式的应用场景

性能对比

from timeit import timeit


def test_s():
    name = 'zhangsan'
    age = 18
    return "%s:%s" % (name, age)


def test_format():
    name = 'zhangsan'
    age = 18
    return '{}:{}'.format(name, age)


def test_f():
    name = 'zhangsan'
    age = 18
    return f'{name}:{age}'


def test_t():
    return Template('{name}:{age}').substitute(name='zhangsan', age=18)

res1 = timeit(test_s, number = 100000)
res2 = timeit(test_format, number = 100000)
res3 = timeit(test_f, number = 100000)
res4 = timeit(test_t, number = 100000)
print(res1)  # 0.027567900004214607
print(res2)  # 0.03230700000131037
print(res3)  # 0.020800700003746897
print(res4)  # 0.0893696999992244

看效率表现,还是 最新的f.str最快

Python 字符串格式化(%和format) 相比于 C 风格的格式字符串,format() 函数 / 方法是 Python 3 添加的高级字符串格式机制,不在使用 % 操作符。% 格式化操作符的写法来自 C 语言的 printf 函数,Python 及其他一些编程语言都依照了相同的写法来定义自己的格式字符串。总体而言,% 百分号方式比较老,而 format 方式是比较先进的,企图替代古老的方式,目前两者共存,可以根据自己的实际需要来选择。提示:% 操作符左边的文本模板被称为“格式字符串”。(1)使用% 格式化操作符输出“字符串”和“整数” 阅读详情

相关推荐

Python开发中的字符串格式化方法str.format用法详解

在本文中,我们详细介绍了Python中字符串格式化方法str.format()的用法。str.format()方法提供了灵活且强大的字符串格式化功能,可以满足各种字符串格式化的需求。通过灵活运用str.format()方法,我们可以更好地控制输出的格式和内容。希望本文能够帮助您理解和应用Python中的字符串格式化方法str.format(),并在实际开发中发挥作用。在这个例子中,我们使用了关键字参数,通过键值对的方式指定要插入的值。在这个例子中,我们使用了位置参数,通过索引来指定要插入的值的位置。

持续更新 556

Python如何进行格式化输出?

Python的格式化输出有两种方式。

oJinGangZuan的博客 3万+

高通QCS2290 SecureBoot全流程实战:从密钥生成到NON-HLOS.bin生成

本文详细拆解了高通QCS2290平台SecureBoot安全启动技术的端到端实战流程。从开发环境搭建、RSA密钥对生成与证书链构建,到关键XML配置文件修改、固件编译与数字签名,最终完成NON-HLOS.bin集成打包,为嵌入式开发者提供了一份清晰、可操作的安全启动部署指南。

weixin_28273593的博客 298

浮点数输出右对齐python_python格式化输出

一、python格式化输出一、%用法1、整数的输出%o —— oct 八进制%d —— dec 十进制%x —— hex 十六进制1 >>> print('%o' % 20)2 243 >>> print('%d' % 20)4 205 >>> print('%x' % 20)6 142、浮点数输出1、格式化输出%f ——保留小数点后面六位有效...

weixin_32022143的博客 3025

R语言分段回归

1.利用虚拟变量进行线性回归 (MEdata.csv的数据来源:https://github.com/ChenQihome9/优快云-Data-Library/blob/master/MEdata.csv) 问题13:针对TAX~GDP,使用分段回归方法,找到其回归方程。编程,并根据程序结果叙述如下几方面问题:(1)分几段最佳?(不超过5段内)(2)分段位置定在哪儿最佳?(3)写出最佳方...

ChenQihome9的博客 1万+

DDR核心机制解析:从Burst到Prefetch的性能跃迁

本文深入解析了DDR内存性能跃迁的核心机制,重点阐述了Burst(突发传输)与Prefetch(预取)技术的协同工作原理。Burst机制通过连续传输数据减少访问延迟,而Prefetch则通过内部预取数据提升吞吐量,两者结合完美匹配现代CPU缓存行需求,是DDR3等内存实现高效带宽的关键。

weixin_29232121的博客 133

python 4种字符串 格式化 打印(输出)的方式

# 使用四种字符串方式来输出,欢迎 xxx 光临 name='张三' ## 1、拼串 print('欢迎 '+name+' 光临!') ## 2、print函数的多个参数 print('欢迎',name,'光临!') ## 3、占位符 print('欢迎 %s 光临!'%name) ## 4、格式化字符串{} print(f'欢迎 {name} 光临!') 运行结果: ...

猎人在吃肉 1995

Android息屏后台任务保活实战:从定时器失效到厂商白名单破解

本文深入探讨了Android应用在息屏后定时任务失效的根源,即系统为省电而触发的休眠机制。文章提供了从传统方案失效分析到实战破解的完整路径,核心在于引导用户将应用加入电池优化白名单并开启自启动权限,从而合法绕过限制。同时,结合WorkManager、AlarmManager等可靠定时方案,实现稳定的后台任务执行。

weixin_28475533的博客 421

Python格式化输出的几种方式

Python中三种格式化输出的方式: 比如要求用户输入用户名和年龄,然后打印如下格式: a = "------------- info -------------" b = "name:" c = "age:" d = "job:" e = "-------------- end -------------" name = input("name") age = input("age") job = input("job") print(a + "\n" + b + name + "\n" + c + ag

Bertram的博客 2万+

提升RAG效果:为何 JSON 格式远胜 Markdown?

在构建强大的 RAG (检索增强生成) 系统时,文档解析是至关重要的第一步。它直接影响着后续的检索效率和生成质量。在众多文档格式中,JSON (JavaScript Object Notation) 格式正逐渐展现出其相对于传统 Markdown 格式的巨大优势。本文将深入探讨 JSON 在 RAG 系统文档解析中的卓越之处,并结合具体案例,让你理解为何 JSON 才是构建下一代智能应用的更优选择。RAG 系统的核心目标是让模型能够利用外部知识库,生成更精准、更贴合实际的答案。

simoncool23的博客 2714

ANSYS命令流黑箱揭秘:流体渗透压力载荷的七种收敛优化策略

本文深入解析ANSYS Workbench中流体渗透压力载荷的七种收敛优化策略,重点探讨接触探测点迭代逻辑、PPCN阈值动态调整及FPAT参数优化等关键技术。通过命令流示例和实战技巧,帮助工程师有效解决流体与结构相互作用仿真中的收敛难题,提升计算效率和精度。

weixin_29274337的博客 517

Python中三种格式化输出的方式

程序中经常会出现这样的 场景:要求用户输入信息,然后打印成固定的格式 比如要求用户输入用户名和年龄,然后打印如下格式: # a = "------------- info -------------" # b = "name:" # c = "age:" # d = "job:" # e = "-------------- end -------------" # name = inpu...

diaosou8348的博客 458

YOLO11改进-注意力-引入多尺度注意力聚合(MSAA)模块

对来自backbone的特征进行细化处理。通过空间和通道两个路径的操作,增强了空间和通道方面的特征信息,使得输出的特征图在空间和通道维度上都更加优质。1. 在空间细化路径中,通过对不同核大小的卷积进行求和以及一系列的空间特征聚合操作,实现了多尺度空间信息的融合。2. 在通道聚合路径中,通过全局平均池化、卷积和激活等操作生成通道注意力图,并与空间细化后的图相结合,实现了通道维度上的多尺度信息融合。

qq_64693987的博客 4675

python字符串_Python 的字符串格式化操作

Python 的字符串格式化操作需要用到格式化操作符:%。Python 风格的字符串格式化非常类似于 C 语言里面的 printf() 函数的字符串格式化,甚至所用的符号都一样,都用百分号(%),并且支持所有 printf() 式的格式化操作。语法如下:format_string % string_to_convertformat_string 为包含 % 的格式标记字符串,表1 中列出了可用的各...

weixin_39575410的博客 183

Unity 热更 之 【HybirdCLR】+【YooAsset】 [安卓 Android端] [代码 + 资源热更] 功能的 简单实现演示

Unity热更有很多方案,各种lua热更,ILRuntime等,这里介绍的是YooAsset+HybridCLR的热更方案,HybridCLR负责更新c#代码,YooAsset负责更新资源。HybridCLR是一种创新的解决方案,专为 Unity 游戏开发中的热更新需求设计。它通过结合解释执行和 Ahead-of-Time (AOT) 编译技术,为跨平台的游戏开发提供了一种高效的热更新机制。原生C#热更新体验,开发工作流与传统Unity C#开发几乎相同,零学习和使用成本。

仙魁XAN 3866

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python中格式化输出有几种写法_Python中三种格式化输出的方式

程序中常常会出现这样的 场景:要求用户输入信息,而后打印成固定的格式python好比要求用户输入用户名和年龄,而后打印以下格式:code# a = "------------- info -------------"# b = "name:"# c = "age:"# d = "job:"# e = "-------------- end -------------"# name = input(...

weixin_39644325的博客 150

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python笔记(千峰教育P19-20)—— 字符串 和 格式化输出

字符串 NAME='Jack' print(NAME) print('hello')#输出的是字符串 value='hello' print(value) value = 'python' print(value) value = 'python1905班' print(value) Jack hello hello python python1905班 示例1 字符串:字符串 表示: ‘’ “” ‘’’ ‘’’ message = '[淘宝]你现在使用验证码登录

m0_46528980的博客 246

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python格式化字符串_Python字符串拼接和格式化输出

基础就业班、自动化班课程课程全面升级更新更好的松勤等你来1、字符串拼接example:a = 'hello' , b = 'python' , c = '!' 将a,b ,c 中的字符串连成一句话。第一种方法:用 + 号a + b +c第二种方法:格式化字符串 %s'%s %s %s' % (a , b ,c)第三种方法:''.join()方式,注意括号里是要连接的可以是列表,元祖' '...

weixin_39907922的博客 448

Python中的四种字符串格式化输出方法

Python最主要的字符串格式化输出主要有四种,在这分别介绍。 一、旧式字符串格式化   Python内置了一个独特的字符串操作方法,通过 % 操作符进行位置格式化。跟 C 中的 printf 很像。如下:   %s 格式说明符告诉 Python 在哪替换 name。   格式输出的字符也跟 C 一样,比如用 %x 输出十六进制:   这里使用了 %x 格式说明符将 int 值转换为字符串并将其表示为十六进制数。   由于 % 操作符只接受一个参数,如果要在单个字符串中进行多次替换,需要将字符串包装到右边的

weixin_44729779的博客 1781

Python 字符串格式化输出的3种方式

1. % print ('我叫%s, 身高%scm' % (name,height)) ** 传入的值为元组,依次填充 %s :占位符 str() %d-:十进制 整数 %x:十六进制 %f :浮点型 指定长度: %5d 右对齐,不足左边补空格 %-5d - 代表左对齐,不足右...

雪国的花儿’s Blog 3万+

Python格式化字符串的4种方式

文章目录Python格式化字符串的4种方式一:%号二:str.format三:f-Strings四:标准库模板五:总结四种方式的应用场景 Python格式化字符串的4种方式 一:%号 %号格式化字符串的方式从Python诞生之初就已经存在时至今日,python官方也并未弃用%号,但也并不推荐这种格式化方式。 # 1、格式的字符串(即%s)与被格式化的字符串(即传入的值)必须按照位置一一对应 # ps:当需格式化的字符串过多时,位置极容易搞混 print('%s asked %s to do somethin

淘小欣的博客 8067

python格式化输出

python相对格式化输出,包含format函数的简单实用

wchoclate的专栏 7万+

【Python】关于字符串的输出以及format格式化输出

3、判断:startswith、endswith、isalpha、isdigit、isalnum、isspace。6、切割字符串:split、rsplit、splitlines、partition、rpartition。注意:input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存。Python为了节省内存,有相同数值的变量id是一样的,可以达到共用的时候,如果没有用到会回收,8、空格处理:ljust、rjust、center、lstrip、rstrip、strip。

2401_83859102的博客 3800

python编程实践:格式化字符串输出的四种方式详解

Python字符串格式化输出,在python编程中,是一个非常重要的知识点,掌握了它,你就可以输出各种格式要求的文本内容,并生成相关要求的文件。

lu_jianjun的专栏 7863

Python 字符串格式化输出

字符串格式化是编程中一个常见的需求,它可以们将不同类型的数据(如数字、文本、日期等)插入到字符串中,以创建格式良好的输出。在 Python 中,有多种方法可以执行字符串格式化,包括 % 操作符格式化、 str.format() 方法格式化以及更现代的 f-字符串格式化。本文将介绍这些方法,详细讨论它们的用法,并提供丰富的示例代码。本文介绍了 Python 中字符串格式化的三种常见方法:旧式的 % 操作符格式化、 str.format() 方法格式化以及 f-字符串格式化。

m0_67847535的博客 2734
上一篇: 60条Python日常工作中的高频写法,收藏
下一篇: Python基础教程:布尔类型bool
Python程序u猿
博客等级 码龄5年 622粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值