前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python全栈开发《29.字符串格式化的三种方式之格式化函数-format、新格式化方案:f-strings》

python全栈开发《29.字符串格式化的三种方式之格式化函数-format、新格式化方案:f-strings》

作者头像
清菡
发布于 2024-10-15 10:43:16
发布于 2024-10-15 10:43:16
10800
代码可运行
举报
文章被收录于专栏:清菡软件测试清菡软件测试
运行总次数:0
代码可运行

1.字符串格式化函数-format

  • 1)string.format函数用来格式化字符串。
  • 2)使用format的字符串主体使用{}大括号来替代格式符。
  • 3)完整用法:string.format(data,data,data...)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print('hello {0},今天看起来气色{1}'.format('小编','不错'))

运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/.venv/bin/python /Users/llq/PycharmProjects/pythonlearn/pythonlearn1/1.py 
hello 小编,今天看起来气色不错

进程已结束,退出代码为 0

0和1分别代表了format中的顺序。0代表小编,1代表不错。

不需要在{}中添加位置的数字:0,1这样的,添加了位置数字也是没有错的:

例1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# coding:utf-8

info = 'my name is %s,my age is %s'

name_01 = '小编'
age_01 = 10
name_02 = 'dewei'
age_02 = 33
print(info % (name_01,age_01))
print(info % (name_02,age_02))

message = '您好,今天是%s,您的手机号码:%s 已经欠费了,请尽快充值'
print(message % ('星期一',123456789))
print(message % (1234567,'星期2'))
print(message)

books =['python','django','flask']
info_2 = 'my name is %s,my age is %s,my book is %s'
print(info_2 % (name_01,age_01,books))

dict_01 = {'a':'a','b':'b'}
print('dict is %s' % dict_01)

info_3  = 'my name is {},my age is {}'
print(info_3.format(name_02,age_02))

运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/.venv/bin/python /Users/llq/PycharmProjects/pythonlearn/pythonlearn1/format.py 
my name is 小编,my age is 10
my name is dewei,my age is 33
您好,今天是星期一,您的手机号码:123456789 已经欠费了,请尽快充值
您好,今天是1234567,您的手机号码:星期2 已经欠费了,请尽快充值
您好,今天是%s,您的手机号码:%s 已经欠费了,请尽快充值
my name is 小编,my age is 10,my book is ['python', 'django', 'flask']
dict is {'a': 'a', 'b': 'b'}
my name is dewei,my age is 33

进程已结束,退出代码为 0

例2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# coding:utf-8

info = 'my name is %s,my age is %s'

name_01 = '小编'
age_01 = 10
name_02 = 'dewei'
age_02 = 33
print(info % (name_01,age_01))
print(info % (name_02,age_02))

message = '您好,今天是%s,您的手机号码:%s 已经欠费了,请尽快充值'
print(message % ('星期一',123456789))
print(message % (1234567,'星期2'))
print(message)

books =['python','django','flask']
info_2 = 'my name is %s,my age is %s,my book is %s'
print(info_2 % (name_01,age_01,books))

dict_01 = {'a':'a','b':'b'}
print('dict is %s' % dict_01)

info_3  = 'my name is {0},my age is {1},my book is {2}'
print(info_3.format(name_02,age_02,books))

运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/.venv/bin/python /Users/llq/PycharmProjects/pythonlearn/pythonlearn1/format.py 
my name is 小编,my age is 10
my name is dewei,my age is 33
您好,今天是星期一,您的手机号码:123456789 已经欠费了,请尽快充值
您好,今天是1234567,您的手机号码:星期2 已经欠费了,请尽快充值
您好,今天是%s,您的手机号码:%s 已经欠费了,请尽快充值
my name is 小编,my age is 10,my book is ['python', 'django', 'flask']
dict is {'a': 'a', 'b': 'b'}
my name is dewei,my age is 33,my book is ['python', 'django', 'flask']

进程已结束,退出代码为 0

如果format中的数量和格式符不一致,就会报错:

例3:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# coding:utf-8

info = 'my name is %s,my age is %s'

name_01 = '小编'
age_01 = 10
name_02 = 'dewei'
age_02 = 33
print(info % (name_01,age_01))
print(info % (name_02,age_02))

message = '您好,今天是%s,您的手机号码:%s 已经欠费了,请尽快充值'
print(message % ('星期一',123456789))
print(message % (1234567,'星期2'))
print(message)

books =['python','django','flask']
info_2 = 'my name is %s,my age is %s,my book is %s'
print(info_2 % (name_01,age_01,books))

dict_01 = {'a':'a','b':'b'}
print('dict is %s' % dict_01)

info_3  = 'my name is {0},my age is {1},my book is {2}'
print(info_3.format(name_02,age_02))

运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/.venv/bin/python /Users/llq/PycharmProjects/pythonlearn/pythonlearn1/format.py 
my name is 小编,my age is 10
my name is dewei,my age is 33
您好,今天是星期一,您的手机号码:123456789 已经欠费了,请尽快充值
您好,今天是1234567,您的手机号码:星期2 已经欠费了,请尽快充值
您好,今天是%s,您的手机号码:%s 已经欠费了,请尽快充值
my name is 小编,my age is 10,my book is ['python', 'django', 'flask']
dict is {'a': 'a', 'b': 'b'}
Traceback (most recent call last):
 File "/Users/llq/PycharmProjects/pythonlearn/pythonlearn1/format.py", line 25, in <module>
   print(info_3.format(name_02,age_02))
IndexError: Replacement index 2 out of range for positional args tuple

进程已结束,退出代码为 1

2.python3.6加入的新格式化方案:f-strings

  • 定义一个变量。
  • 字符串前加f符号。
  • 需要格式化的位置使用{变量名}。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# coding:utf-8

info = 'my name is %s,my age is %s'

name_01 = '小编'
age_01 = 10
name_02 = 'dewei'
age_02 = 33
print(info % (name_01,age_01))
print(info % (name_02,age_02))

message = '您好,今天是%s,您的手机号码:%s 已经欠费了,请尽快充值'
print(message % ('星期一',123456789))
print(message % (1234567,'星期2'))
print(message)

books =['python','django','flask']
info_2 = 'my name is %s,my age is %s,my book is %s'
print(info_2 % (name_01,age_01,books))

dict_01 = {'a':'a','b':'b'}
print('dict is %s' % dict_01)

info_3  = 'my name is {0},my age is {1},my book is {2}'
print(info_3.format(name_02,age_02,books))

info_4 =  f'my name is {name_01},my age is {age_02}'
print(info_4)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/.venv/bin/python /Users/llq/PycharmProjects/pythonlearn/pythonlearn1/format.py 
my name is 小编,my age is 10
my name is dewei,my age is 33
您好,今天是星期一,您的手机号码:123456789 已经欠费了,请尽快充值
您好,今天是1234567,您的手机号码:星期2 已经欠费了,请尽快充值
您好,今天是%s,您的手机号码:%s 已经欠费了,请尽快充值
my name is 小编,my age is 10,my book is ['python', 'django', 'flask']
dict is {'a': 'a', 'b': 'b'}
my name is dewei,my age is 33,my book is ['python', 'django', 'flask']
my name is 小编,my age is 33

进程已结束,退出代码为 0

这种格式化方法,一定要提前定义好变量名,否则是无法使用的。

3.哪种格式化方法更好?

推荐使用format函数,使用format函数不需要提前定义好变量名,也比第一种方法:根据类型定义的格式化,更简单。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# coding:utf-8

info = 'my name is %s,my age is %s'

name_01 = '小编'
age_01 = 10
name_02 = 'dewei'
age_02 = 33
print(info % (name_01,age_01))
print(info % (name_02,age_02))

message = '您好,今天是%s,您的手机号码:%s 已经欠费了,请尽快充值'
print(message % ('星期一',123456789))
print(message % (1234567,'星期2'))
print(message)

books =['python','django','flask']
info_2 = 'my name is %s,my age is %s,my book is %s'
print(info_2 % (name_01,age_01,books))

dict_01 = {'a':'a','b':'b'}
print('dict is %s' % dict_01)

info_3  = 'my name is {0},my age is {1},my book is {2}'
print(info_3.format(name_02,age_02,books))

info_4 =  f'my name is {name_01},my age is {age_02}'
print(info_4)

print(info_3.format('dewei',33,['python']))

运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/Users/llq/PycharmProjects/pythonlearn/pythonlearn/.venv/bin/python /Users/llq/PycharmProjects/pythonlearn/pythonlearn1/format.py 
my name is 小编,my age is 10
my name is dewei,my age is 33
您好,今天是星期一,您的手机号码:123456789 已经欠费了,请尽快充值
您好,今天是1234567,您的手机号码:星期2 已经欠费了,请尽快充值
您好,今天是%s,您的手机号码:%s 已经欠费了,请尽快充值
my name is 小编,my age is 10,my book is ['python', 'django', 'flask']
dict is {'a': 'a', 'b': 'b'}
my name is dewei,my age is 33,my book is ['python', 'django', 'flask']
my name is 小编,my age is 33
my name is dewei,my age is 33,my book is ['python']

进程已结束,退出代码为 0
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 清菡软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解
CustomDialog = 》 OpenCustomDialog = 》 DialogHub
GeorgeGcs
2025/03/28
1420
HarmonyOS 开发实践 —— 基于promptAction全局弹窗
可以使用openCustomDialog接口, 创建并弹出dialogContent对应的自定义弹窗,使用Promise异步回调。
小帅聊鸿蒙
2024/11/25
1300
HarmonyOS 开发实践 —— 基于promptAction全局弹窗
HarmonyOS Next中的弹出框使用
弹出框是一种模态窗口,通常用于在保持当前上下文环境的同时,临时展示用户需关注的信息或待处理的操作。用户需在模态弹出框内完成相关交互任务之后,才能退出模态模式。弹出框可以不与任何组件绑定,其内容通常由多种组件组成,如文本、列表、输入框、图片等,以实现布局。ArkUI当前提供了自定义和固定样式两类弹出框组件。
儿歌八万首
2025/03/19
450
HarmonyOS Next中的弹出框使用
【HarmonyOS Next】鸿蒙应用实现弹框DialogHub详解
鸿蒙中实现弹框目前官方提供openCustomDialog和CustomDialog两种模式。推荐前者,详情见下图和官网文档链接:
GeorgeGcs
2025/03/28
1290
【HarmonyOS Next】鸿蒙应用弹框和提示气泡详解(二)之浮层(OverlayManager),半模态页面(bindSheet),全模态页面
上期围绕 HarmonyOS Next 最新API趋势,介绍了鸿蒙应用中最新的自定义弹框和提示气泡的使用。
GeorgeGcs
2025/03/26
890
【HarmonyOS Next】鸿蒙应用弹框和提示气泡详解(二)之浮层(OverlayManager),半模态页面(bindSheet),全模态页面
HarmonyOS 开发实践 —— 原生应用占用空间管理
1.可以通过storageStatistics.getCurrentBundleStats接口获取缓存大小。
小帅聊鸿蒙
2024/12/11
710
HarmonyOS 开发实践 —— 原生应用占用空间管理
HarmonyOS 开发实践——在ArkTS中,实现不在Enter模块中就可以创建的自定义弹窗
2、在@CustomDialog装饰的自定义组件中必须声明CustomDialogControlle类型的变量
小帅聊鸿蒙
2024/10/29
2981
深入解析鸿蒙系统的页面路由(Router)机制
鸿蒙系统以其独特的分布式架构和跨设备的统一体验而备受瞩目。在这个系统中,页面路由(Router)机制是连接应用各页面的关键组成部分。本文将深入探讨鸿蒙系统的页面路由,揭示其工作原理、特点以及在应用开发中的实际应用。
小帅聊鸿蒙
2024/07/20
7060
【HarmonyOS NEXT】鸿蒙应用使用后台任务之长时任务,解决屏幕录制音乐播放等操作不被挂起
了解后台任务和长时任务前,我们需要先明白鸿蒙的后台特性:所谓的后台,指的是设备返回主界面、锁屏、应用切换等操作会使应用退至后台这个状态。
GeorgeGcs
2025/03/24
1390
【HarmonyOS NEXT】鸿蒙应用使用后台任务之长时任务,解决屏幕录制音乐播放等操作不被挂起
HarmonyOS 开发实践——基于@ohos.data.unifiedDataChannel实现数据共享
本模块为统一数据管理框架(Unified Data Management Framework,UDMF)的组成部分,针对多对多跨应用数据共享的不同业务场景提供了标准化的数据通路,提供了标准化的数据接入与读取接口。同时对文本、图片等数据类型提供了标准化定义,方便不同应用间进行数据交互,减少数据类型适配的工作量。
小帅聊鸿蒙
2024/11/15
1100
HarmonyOS 开发实践——基于@ohos.data.unifiedDataChannel实现数据共享
【HarmonyOS NEXT】鸿蒙应用实现屏幕录制详解和源码
官方文档关于屏幕录制的API和示例介绍获取简单和突兀。使用起来会让上手程度变高。所以特意开篇文章,讲解屏幕录制的使用。官方文档参见:使用AVScreenCaptureRecorder录屏写文件(ArkTS)
GeorgeGcs
2025/03/24
700
【HarmonyOS NEXT】鸿蒙应用实现屏幕录制详解和源码
HarmonyOS 开发实践 —— 事件通信能力解决方案
元能力和事件通知当前提供的通信方式主要有Emitter、EventHub、CommonEvent,线程间通信也可以使用Worker和Taskpool提供的postMessage和sendData向数组线程发送消息。应用间通信可以使用自定义公共事件和IPC&RPC两种方式。本文主要介绍事件通知和元能力提供的通信能力。
小帅聊鸿蒙
2024/12/01
2540
HarmonyOS 开发实践 —— 事件通信能力解决方案
【HarmonyOS学习】用户文件访问
分为文档类Uri和媒体文件Uri两类,需要是normal等级的应用(默认的应用是这个)调用这两个类,要不然会报没有权限的错误,官方配图如下:
钟子翔
2024/12/24
1170
【HarmonyOS NEXT】鸿蒙应用压缩和解压处理
鸿蒙应用中经常会遇到使用压缩包的场景。例如H5的离线包逻辑,需要提前将资源包下载到本地,进行压缩操作获取资源。
GeorgeGcs
2025/03/28
1670
HarmonyOS 开发实践 —— 基于Picker的受限权限适配方案
Picker由系统独立进程实现,应用可以通过拉起Picker组件,用户在Picker上选择对应的资源(如图片、文档等),应用可以获取Picker返回的结果。
小帅聊鸿蒙
2024/12/06
1580
【鸿蒙基于API 13实战开发】—— ArkUI 组件:Router切换Navigation
从ArkUI组件树层级上来看,原先由Router管理的page在页面栈管理节点stage的下面。Navigation作为导航容器组件,可以挂载在单个page节点下,也可以叠加、嵌套。Navigation管理了标题栏、内容区和工具栏,内容区用于显示用户自定义页面的内容,并支持页面的路由能力。Navigation的这种设计上有如下优势:
小帅聊鸿蒙
2025/01/17
1090
【鸿蒙基于API 13实战开发】—— ArkUI 组件:Router切换Navigation
HarmonyOS 开发实践 —— 基于短距离通信的BLE蓝牙扫描
蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的BLE蓝牙称为低功耗蓝牙。BLE模块提供了对蓝牙操作和管理的方法。
小帅聊鸿蒙
2024/11/27
1990
HarmonyOS 开发实践 —— 基于短距离通信的BLE蓝牙扫描
鸿蒙开发:wrapBuilder传递参数
在前边的文章中,关于wrapBuilder传递参数我们有过概述,无论是定义在局部还是全局,传递参数都是非常的简单,直接调用builder函数即可,简单案例如下所示:
程序员一鸣
2025/03/10
840
鸿蒙开发:wrapBuilder传递参数
鸿蒙(HarmonyOS)性能优化实战-电量优化
设备返回主界面、锁屏、应用切换等操作会使应用退至后台。为了降低设备耗电速度、保障用户使用流畅度,系统会对退至后台的应用进行管控,包括进程挂起和进程终止。为了保障后台音乐播放、日历提醒等功能的正常使用,系统提供了受规范约束的后台任务,扩展应用在后台的运行时间。
小帅聊鸿蒙
2024/10/24
1820
鸿蒙(HarmonyOS)性能优化实战-电量优化
鸿蒙安全控件之位置控件简介
位置控件使用直观且易懂的通用标识,让用户明确地知道这是一个获取位置信息的按钮。这满足了授权场景需要匹配用户真实意图的需求。只有当用户主观愿意,并且明确了解使用场景后点击位置控件,应用才会获得临时的授权,获取位置信息并完成相应的服务功能。
龙儿筝
2024/11/28
1210
推荐阅读
相关推荐
【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文