Python 高阶内容:字符串从格式化到高级操作

Python 高阶内容:字符串从格式化到高级操作

文章目录

  • Python 高阶内容:字符串从格式化到高级操作
      • 一 百分号模式
        • 1 单参数
        • 2 多参数时字符串的传入
        • 3 用字典的形式录入
      • 二 format功能
        • 1 占位符
        • 2 字典模式
        • 3 格式化数据
        • 4 format 的常用格式
      • 三 `f` 格式化字符串
      • 四 修改字符串
        • 1 剔除前后空白
        • 2 替换文字
        • 3 文字的大小写处理
        • 4 拆散你,重组你
        • 5 街头巷尾遇见你
      • 五 完整代码示例
      • 六 源码地址

本篇文章带你深入了解 Python 字符串的高阶使用技巧,涵盖从基础到高级的字符串操作。我们将探讨 % 格式化、format()f 字符串的使用方法,这些功能能让你更高效地处理字符串数据。同时,我们还介绍了一些常用的字符串修改方法,如去除空白、替换文字、大小写转换、字符串分割和合并等操作。这些操作不仅能够满足日常编程需求,还可以用于更复杂的数据处理场景。通过这些实例,你将学会如何灵活运用字符串操作技巧,提高编程效率和代码可读性。本文旨在为你提供全面的 Python 字符串处理指南,让你在实际应用中更加得心应手。

主要涉及功能

%百分号模式format功能f格式化字符串修改字符串
"%s" % string"{}".format()f"{n}"string.strip()
string.replace()
string.lower()
string.upper()
string.split()
",".join([])
string.startswith()
string.endswith()

一 百分号模式

1 单参数
    name = "Your Python"print("我的名字是 " + name + "!")print("我的名字是 %s!" % name)
2 多参数时字符串的传入
		name01 = "Your Python"age = 18gender = "男"print("我的名字是 " + name01 + "!我" + str(age) + "岁了,我是" + gender + "的~")print("我的名字是 %s !我 %d 岁了,我是 %s 的~" % (name01, age, gender))
3 用字典的形式录入

字典不用关心参数的顺序,字典的key对应上就可以。

		name02 = "Your Python"age02 = 18gender02 = "男"print("我的名字是 %(nm)s !我 %(age)d 岁了,我是 %(gd)s 的~" % {"nm": name02, "age": age02, "gd": gender02})

注意 % 后面参数

		# 注意一些 % 后面参数的意思name03 = "Your Python"age03 = 18height03 = 1.8print(" 我的名字是 %s !我 %d 岁了,我 %f 米高~" % (name03, age03, height03))# 控制小数的长度print("%f" % (1 / 3))print("%.2f" % (1 / 3))print("%f" % (1 / 3))  # 后面不限制print("%.2f" % (1 / 3))  # 后面限制 2 个位置print("%4d" % (1 / 3))  # 前面补全最大 4 个位置 (包含本身数字的占位)print("%5d" % 12)  # 前面补全最大 5 个位置(包含本身数字的占位)

二 format功能

1 占位符

format 不需要关注数据类型,使用 {} 占位。

    name04 = "Your Python"age04 = 18height04 = 1.8print("我的名字是 %s !我 %d 岁了,我 %f 米高~" % (name04, age04, height04))print("我的名字是 {} !我 {} 岁了,我 {} 米高~".format(name04, age04, height04))

{0} 中的数字代表 format 里的数据索引,索引是从 0 开始的,使用类似{0} 占位可以多次复用 format 里的数据。

		name05 = "Your Python"age05 = 18height05 = 1.8print("我的名字是 {0} !我 {1} 岁了,我 {2} 米高~我是{0}".format(name05, age05, height05))
2 字典模式
		# 字典模式name06 = "Your Python"age06 = 18height06 = 1.8print("我的名字是 {nm} !我 {age} 岁了,我 {ht} 米高~我是{nm}".format(nm=name06, age=age06, ht=height06))
3 格式化数据
		# 格式化数据print("我 {:.3f} 米高".format(1.12345))print("我 {ht:.1f} 米高".format(ht=1.12345))print("我 {:3d} 米高".format(1))  # 前面补全最大 3 个位置print("我 {:3d} 米高".format(21))  # 前面补全最大 3 个位置# 乘以 100%txt = "You scored {:%}"print(txt.format(2.1234))# 乘以 100% 保留两位小数txt = "You scored {:.2%}"print(txt.format(2.1234))
4 format 的常用格式
方式意思
:,每 3 个 0 就用逗号隔开,比如 1,000
:b该数字的二进制
:d整数型
:f小数模式
:%百分比模式

f 格式化字符串

# f格式化字符串
name07 = "莫烦Python"
age07 = 18
height07 = 1.8
print(f"我的名字是 {name07} !我 {age07} 岁了,我 {height07} 米高~")
# 可以在 {} 中进行运算
print(f"我 {age} 岁了,明年我就{age + 1}岁了~")# 支持特殊写法
score = 2.1234
print(f"You scored {score:.2%}")
print(f"You scored {score:.3f}")
print(f"You scored {12:5d}")

四 修改字符串

常用修改字符串的方法

方式意思
strip去除两端的空白符
replace替换字符
lower全部做小写处理
upper全部做大写处理
title仅开头的字母大写
split按要求分割
join按要求合并
startswith判断是否为某字段开头
endswith判断是否为某字段结尾
1 剔除前后空白
# 剔除前后空白
print("  我不想要前后的空白,但是  中间\n的可以有\n  ".strip())
2 替换文字

# 替换文字
print("帮我替换掉 莫烦".replace("莫烦", "your python"))
3 文字的大小写处理
# 文字的大小写处理
print("How ABOUT lower CaSe?".lower())
print("And upper CaSe?".upper())
print("do tiTle For me".title())
4 拆散你,重组你
# 拆散你,重组你
print("你|帮|我|拆分|一下|这句话".split("|"))
print("|".join(["你", "帮", "我", "重组", "一下", "这句话"]))
5 街头巷尾遇见你
# 街头巷尾遇见你
print("我在街头看到你".startswith("我在"))
print("我在街头看到你".startswith("街头"))
print("我在巷尾看到你".endswith("看到你"))
print("我在巷尾看到你".endswith("巷尾"))

五 完整代码示例

# This is a sample Python script.# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.def print_hi(name):# Use a breakpoint in the code line below to debug your script.print(f'Hi, {name}')  # Press ⌘F8 to toggle the breakpoint.# %百分号模式name = "Your Python"print("我的名字是 " + name + "!")print("我的名字是 %s!" % name)# 多参数时字符串的传入name01 = "Your Python"age = 18gender = "男"print("我的名字是 " + name01 + "!我" + str(age) + "岁了,我是" + gender + "的~")print("我的名字是 %s !我 %d 岁了,我是 %s 的~" % (name01, age, gender))# 用字典的形式录入,不用关心参数的顺序,字典的key对应上就可以name02 = "Your Python"age02 = 18gender02 = "男"print("我的名字是 %(nm)s !我 %(age)d 岁了,我是 %(gd)s 的~" % {"nm": name02, "age": age02, "gd": gender02})# 注意一些 % 后面参数的意思name03 = "Your Python"age03 = 18height03 = 1.8print(" 我的名字是 %s !我 %d 岁了,我 %f 米高~" % (name03, age03, height03))# 控制小数的长度print("%f" % (1 / 3))print("%.2f" % (1 / 3))print("%f" % (1 / 3))  # 后面不限制print("%.2f" % (1 / 3))  # 后面限制 2 个位置print("%4d" % (1 / 3))  # 前面补全最大 4 个位置 (包含本身数字的占位)print("%5d" % 12)  # 前面补全最大 5 个位置(包含本身数字的占位)# format功能更多,format 不需要关注数据类型。使用 {} 占位name04 = "Your Python"age04 = 18height04 = 1.8print("我的名字是 %s !我 %d 岁了,我 %f 米高~" % (name04, age04, height04))print("我的名字是 {} !我 {} 岁了,我 {} 米高~".format(name04, age04, height04))# {0} 中的数字代表 format 里的数据索引,索引是从 0 开始的。这样就可以多次复用 format 里的数据。name05 = "Your Python"age05 = 18height05 = 1.8print("我的名字是 {0} !我 {1} 岁了,我 {2} 米高~我是{0}".format(name05, age05, height05))# 字典模式name06 = "Your Python"age06 = 18height06 = 1.8print("我的名字是 {nm} !我 {age} 岁了,我 {ht} 米高~我是{nm}".format(nm=name06, age=age06, ht=height06))# 格式化数据print("我 {:.3f} 米高".format(1.12345))print("我 {ht:.1f} 米高".format(ht=1.12345))print("我 {:3d} 米高".format(1))  # 前面补全最大 3 个位置print("我 {:3d} 米高".format(21))  # 前面补全最大 3 个位置# 乘以 100%txt = "You scored {:%}"print(txt.format(2.1234))# 乘以 100% 保留两位小数txt = "You scored {:.2%}"print(txt.format(2.1234))# 一些 format 的常用格式# f格式化字符串name07 = "莫烦Python"age07 = 18height07 = 1.8print(f"我的名字是 {name07} !我 {age07} 岁了,我 {height07} 米高~")# 可以在 {} 中进行运算print(f"我 {age} 岁了,明年我就{age + 1}岁了~")# 支持特殊写法score = 2.1234print(f"You scored {score:.2%}")print(f"You scored {score:.3f}")print(f"You scored {12:5d}")# 剔除前后空白print("  我不想要前后的空白,但是  中间\n的可以有\n  ".strip())# 替换文字print("帮我替换掉 莫烦".replace("莫烦", "your python"))# 文字的大小写处理print("How ABOUT lower CaSe?".lower())print("And upper CaSe?".upper())print("do tiTle For me".title())# 拆散你,重组你print("你|帮|我|拆分|一下|这句话".split("|"))print("|".join(["你", "帮", "我", "重组", "一下", "这句话"]))# 街头巷尾遇见你print("我在街头看到你".startswith("我在"))print("我在街头看到你".startswith("街头"))print("我在巷尾看到你".endswith("看到你"))print("我在巷尾看到你".endswith("巷尾"))# Press the green button in the gutter to run the script.
if __name__ == '__main__':print_hi('字符串的高级玩法')# See PyCharm help at https://www.jetbrains.com/help/pycharm/

复制粘贴并覆盖到你的 main.py 中运行,运行结果如下。


Hi, 字符串的高级玩法
我的名字是 Your Python!
我的名字是 Your Python!
我的名字是 Your Python!我18岁了,我是男的~
我的名字是 Your Python !我 18 岁了,我是 男 的~
我的名字是 Your Python !我 18 岁了,我是 男 的~我的名字是 Your Python !我 18 岁了,我 1.800000 米高~
0.333333
0.33
0.333333
0.33012
我的名字是 Your Python !我 18 岁了,我 1.800000 米高~
我的名字是 Your Python !我 18 岁了,我 1.8 米高~
我的名字是 Your Python !我 18 岁了,我 1.8 米高~我是Your Python
我的名字是 Your Python !我 18 岁了,我 1.8 米高~我是Your Python
我 1.123 米高
我 1.1 米高
我   1 米高
我  21 米高
You scored 212.340000%
You scored 212.34%
我的名字是 莫烦Python !我 18 岁了,我 1.8 米高~
我 18 岁了,明年我就19岁了~
You scored 212.34%
You scored 2.123
You scored    12
我不想要前后的空白,但是  中间
的可以有
帮我替换掉 your python
how about lower case?
AND UPPER CASE?
Do Title For Me
['你', '帮', '我', '拆分', '一下', '这句话']
你|帮|我|重组|一下|这句话
True
False
True
False

六 源码地址

代码地址:

国内看 Gitee 之 字符串的高级玩法.py

国外看 GitHub 之 字符串的高级玩法.py

引用 莫烦 Python

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146074.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

2024华为杯研赛D题分析

2024华为杯研究生数学建模D题分析如下,完整版本在文末名片

【HTTP】请求“报头”,Referer 和 Cookie

Referer 描述了当前这个页面是从哪里来的(从哪个页面跳转过来的) 浏览器中,直接输入 URL/点击收藏夹打开的网页,此时是没有 referer。当你在 sogou 页面进行搜索时,新进入的网页就会有 referer 有一个非常典型的用…

扎克伯格的未来愿景:用智能眼镜引领数字社交新时代

Meta Connect 2024大会前夕,创始人马克扎克伯格的90分钟播客访谈,为我们描绘了Meta未来的蓝图。这场访谈,不仅是大会的热身,更是对科技未来的一次深刻洞察。 人工智能 - Ai工具集 - 未来办公人的智能办公生活导航网 扎克伯格的未…

nacos适配人大金仓的数据库

前言 在微服务架构中,服务发现和配置管理是关键组件。Nacos作为一个动态服务发现和配置管理平台,支持多种数据库作为其后端存储。本文将探讨如何在Nacos中适配人大金仓数据库,以及在此过程中的最佳实践。 Nacos简介 Nacos(Nami…

二分查找算法(1) _二分查找_模板

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 二分查找算法(1) _二分查找模板 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 1. 二…

Redis——持久化策略

Redis持久化 Redis的读写操作都是在内存上,所以Redis性能高。 但是当重启的时候,或者因为特殊情况导致Redis崩了,就可能导致数据的丢失。 所以Redis采取了持久化的机制,重启的时候利用之间持久化的文件实现数据的恢复。 Redis提…

[Matplotlib教程] 02 折线图、柱状图、散点图教程

基于MFCC和CNN的语音情感识别 2 折线图、柱状图、散点图2.1 折线图2.1.1 简单折线图2.1.1 线形和Markevery2.1.2 带误差棒的折线图2.1.3 区间填充和透明度 2.2 柱状图2.2.1 分组柱状图2.2.2 堆叠柱状图2.2.3 横向柱状图 2.3 散点图 我们的网站是 菜码编程,我们的q群…

django项目添加测试数据的三种方式

文章目录 自定义终端命令Faker添加模拟数据基于终端脚本来完成数据的添加编写python脚本编写shell脚本执行脚本需要权限使用shell命令来完成测试数据的添加 添加测试数据在工作中一共有三种方式: 可以根据django的manage.py指令进行[自定义终端命令]可以采用第三方…

2024华为杯数学建模研赛F题建模代码思路文章研究生数学建模

截止2024.8.21 12点 已更新F全部小问的建模和问题一的代码 #### https://docs.qq.com/doc/DVVBUREF2SmFhRUl3F题: 问题1:卫星轨道根数与运动学关系的数学模型 从卫星的轨道根数计算出它在特定时刻的三维位置和速度。轨道根数包括: 1.计算卫星的轨道半径…

Android Studio开发发布教程

本文讲解Android Studio如何发布APP。 在Android Studiobuild菜单栏下点击Generate Singed Bundle/APK…打开对话框。 选择APK点击Next 点击Create New...进行创建

【赵渝强老师】K8s的DaemonSets控制器

DaemonSet控制器相当于在节点上启动了一个守护进程。通过使用DaemonSet可以确保一个Pod的副本运行在 Node节点上。如果有新的Node节点加入集群,DaemonSet也会自动给新加入的节点增加一个Pod的副本;反之,当有Node节点从集群中移除时&#xff0…

KMP整理+个人推导+快速上手理解

整理了一下KMP的写法: 这个是我自己写的(个人推导,可能在时间复杂度上表现较弱,但是非常帮助初学者进行理解!) 下面是代码, ne 是next数组。我这个next数组表示的是: ne[i] : 当s…

Spring Boot框架在高校心理辅导中的实践

2 相关技术简介 2.1Java技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任…

独立站内容营销SOP 1.0 丨出海笔记

提到内容营销,可能很多朋友都听过但没深入做,国内跨境独立站通过内容营销做的大流量的目前不多,哪怕大如 Shein, Anker,大部分时候还是在买量获客的阶段。 但大家只要明白一点即可:内容做得好不好,直接影响…

AD中的PCB的原点怎么设置?

在AD中,可以通过编辑元件的属性或者直接在PCB编辑器中设置原点来设置PCB或元件的原点。 对于PCB设计,你可以在PCB编辑器中直接设置原点。首先,你需要打开你的PCB设计文件。然后,在PCB编辑器中,选择“编辑”菜单下的“原…

在JSP环境配置中遇到的一些问题

本人使用eclipse进行开发,在eclipse中配置环境。 1.安装Tomcat 下载版本为tomcat-9.0.95; 详见教程:tomcat下载安装及配置教程_tomcat安装-CSDN博客 遇到的问题:运行startup.bat会闪退, 解决办法:tomcat…

UI自动化测试(python)Web端4.0

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…

众数信科 | CrowdAgents 企业级AI智能体平台

AI大模型在企业落地 还存在很多问题 企业需要什么样的大模型产品 众数信科 CrowdAgents企业级AI智能体平台 平台亮点 01 02 03 核心功能 AI智能体 AI企业智脑 Agent引擎 关于我们 众数信科成立于2021年,由云从科技联合厦门火炬集团、民生电商作为创始股东发起成…

智能仓库|基于springBoot的智能无人仓库管理设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书(可指定任意题目) 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 互联网发展至今,无论是其理论还是技术都已经成熟&#xf…

【24华为杯数模研赛赛题思路已出】国赛B题思路丨附参考代码丨免费分享

2024年华为杯研赛B题解题思路 B题 WLAN组网中网络吞吐量建模 问题1 请根据附件WLAN网络实测训练集中所提供的网络拓扑、业务流量、门限、节点间RSSI的测试基本信息,分析其中各参数对AP发送机会的影响,并给出影响性强弱的顺序。通过训练的模型&#xff…