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

news2024/9/21 22:29:49

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 = 18
		gender = "男"
		print("我的名字是 " + name01 + "!我" + str(age) + "岁了,我是" + gender + "的~")
		print("我的名字是 %s !我 %d 岁了,我是 %s 的~" % (name01, age, gender))
3 用字典的形式录入

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

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

注意 % 后面参数

		# 注意一些 % 后面参数的意思
		name03 = "Your Python"
		age03 = 18
		height03 = 1.8
		print(" 我的名字是 %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 = 18
    height04 = 1.8
    print("我的名字是 %s !我 %d 岁了,我 %f 米高~" % (name04, age04, height04))
    print("我的名字是 {} !我 {} 岁了,我 {} 米高~".format(name04, age04, height04))

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

		name05 = "Your Python"
		age05 = 18
		height05 = 1.8
		print("我的名字是 {0} !我 {1} 岁了,我 {2} 米高~我是{0}".format(name05, age05, height05))
2 字典模式
		# 字典模式
		name06 = "Your Python"
		age06 = 18
		height06 = 1.8
		print("我的名字是 {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 = 18
    gender = "男"
    print("我的名字是 " + name01 + "!我" + str(age) + "岁了,我是" + gender + "的~")
    print("我的名字是 %s !我 %d 岁了,我是 %s 的~" % (name01, age, gender))

    # 用字典的形式录入,不用关心参数的顺序,字典的key对应上就可以
    name02 = "Your Python"
    age02 = 18
    gender02 = "男"
    print("我的名字是 %(nm)s !我 %(age)d 岁了,我是 %(gd)s 的~" % {"nm": name02, "age": age02, "gd": gender02})

    # 注意一些 % 后面参数的意思
    name03 = "Your Python"
    age03 = 18
    height03 = 1.8
    print(" 我的名字是 %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 = 18
    height04 = 1.8
    print("我的名字是 %s !我 %d 岁了,我 %f 米高~" % (name04, age04, height04))
    print("我的名字是 {} !我 {} 岁了,我 {} 米高~".format(name04, age04, height04))

    # {0} 中的数字代表 format 里的数据索引,索引是从 0 开始的。这样就可以多次复用 format 里的数据。
    name05 = "Your Python"
    age05 = 18
    height05 = 1.8
    print("我的名字是 {0} !我 {1} 岁了,我 {2} 米高~我是{0}".format(name05, age05, height05))

    # 字典模式
    name06 = "Your Python"
    age06 = 18
    height06 = 1.8
    print("我的名字是 {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 = 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}")


    # 剔除前后空白
    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.33
   0
   12
我的名字是 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.coloradmin.cn/o/2153460.html

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

相关文章

BMC 虚拟i2c访问PCA9545(switch芯片)后面的设备,为什么找不到PCA9545?

1.说明 1.1 背景 无意中看到PCA9545(switch芯片)后面有设备,但是PCA9545设备本身是连接到物理设备i2c上的,然而扫描该物理i2c bus,却找不到该设备。此篇文章主要找一下该原因的。 1.2 参考代码 当前使用的是ast2600芯片,可参考…

Mudslide

作者未提供代码

Qt/C++ TCP调试助手V1.1 新增图像传输与接收功能(附发布版下载链接)

发布版本链接 通过百度网盘分享的文件:TCP调试助手V1.zip(含客户端与服务器) 链接:https://pan.baidu.com/s/14LTRPChPhYdwp_s6KeyBiA?pwdcedu 提取码:cedu 基于Qt/C实现了一款功能丰富的TCP服务器与客户端调试助手…

HT876 带任意限幅的10.9Wx2高保真音频功放

特点 可任意配置的限幅功能 自由选择音频限制幅度,使输出音频信号限制在固定 失真水平内 内置自动限温控制功能 支持AB类与D类切换 THDN:0.02%(VDD8.4V, RL 4Ω, fIN 1kHz, Po 2x1.0W, BTL) 输出功率(fIN1kHZ,THDN10%) 2x10.9W (VDD9.0V, RL4Ω, BTL) VDD供电范围:2…

【C++】模拟实现二叉搜索(排序)树

🦄个人主页:修修修也 🎏所属专栏:实战项目集 ⚙️操作环境:Visual Studio 2022 目录 一.了解项目功能 二.逐步实现项目功能模块及其逻辑详解 📌实现BSTreeNode类模板 🎏构造BSTreeNode类成员变量 🎏实现BSTreeNode类构…

空间解析几何2:空间中两线段/直线的距离【附MATLAB代码】

目录 理论公式 MATLAB代码 理论公式 MATLAB代码 公式实现 function [dis,P,Q,t1,s1]line2LineDistance(A1,B1,C1,D1) %求两线段的最短距离 % input % A1,B1为线段一的两端点 C1,D1为线段二的两端点 % output % dis,为两线段的最短距离,P,Q为距离最短时在两线段上…

10.2 溪降技术:双重检查

目录 10.2 双重检查概览观看视频课程电子书:双重检查场景场景 1场景 2 个人责任示例 1示例 2 总结 10.2 双重检查 概览 俗话说:“江山易改,本性难移”。在我们开始体验峡谷探险时,培养良好的习惯对我们的进一步发展至关重要。在所…

Spring AOP的应用

目录 1、maven坐标配置与xml头配置 2、代理方式的选择与配置 3、AOP的三种配置方式 3.1、XML模式 3.1.1 创建目标类和方法 3.1.2 创建切面 3.1.3 切面xml配置与表达式说明 3.1.4 单测 3.2 纯注解模式 3.2.1 开启注解相关配置 3.2.2 创建目标类和方法 3.2.3 创建切面…

ChatGPT 4o 使用指南 (9月更新)

首先基础知识还是要介绍得~ 一、模型知识: GPT-4o:最新的版本模型,支持视觉等多模态,OpenAI 文档中已经更新了 GPT-4o 的介绍:128k 上下文,训练截止 2023 年 10 月(作为对比,GPT-4…

java之斗地主部分功能的实现

今天我们要实现斗地主中发牌和洗牌这两个功能,该如何去实现呢? 1.创建牌类:52张牌每一张牌包含两个属性:牌的大小和牌的花色。 故我们优先创建一个牌的类(Card):包含大小和花色。 public class Card { //单张牌的大小及类型/…

20240921在友善之臂的NanoPC-T6开发板上使用Rockchip原厂的Android12适配宸芯的数传模块CX6602N

127|console:/ # uname -a console:/ # ifconfig console:/ # ifconfig -a console:/ # ifconfig -a 130|console:/ # ifconfig usb0 192.168.42.130 console:/ # console:/ # ifconfig console:/ # iperf3 -s & iperf3 -c 192.168.42.130 -i 1 -t 30 20240921在友善之臂的…

828华为云征文|华为云Flexus云服务器X实例之openEuler系统下部署Grav内容管理系统

828华为云征文|华为云Flexus云服务器X实例之openEuler系统下部署Grav内容管理系统 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、Grav介绍2.1 CMS介绍2.2 Grav简介2.3 Grav特点2.4 …

TinyML-On-The-Fly: 实时、低功耗、低成本的微控制器嵌入式设备内计算机视觉技术用于无人机图像分类

这篇论文的标题是《TinyML-On-The-Fly: Real-Time Low-Power and Low-Cost MCU-Embedded On-Device Computer Vision for Aerial Image Classification》,作者是 Riya Samanta, Bidyut Saha, Soumya K. Ghosh,来自印度理工学院克勒格布尔分校。论文主要研…

电子元器件之MOS管,附上几个常用MOS管电路和仿真。

MOS管是一种常用的电子元器件。 1.MOS管的类别 MOSFET简称MOS,是一种绝缘栅型场效应管。按照类别可以分为增强型mos管和耗尽型mos管。 导电沟道的形成方式‌ 增强型MOS管:在没有外加电压时,源极和漏极之间没有导电沟道存在。只有当栅极电…

【玉米田】

题目 代码 #include <bits/stdc.h> using namespace std; typedef long long LL;const int mod 1e8; const int M 1 << 12; LL f[13][M]; int g[13]; vector<int> state; vector<int> p[M]; int n, m; bool check(int x) {return !(x & x <&…

攻防世界---->Windows_Reverse1(补)

做题笔记。 做题回顾。 假设&#xff0c;我们不知道地址随机怎么办&#xff1f;不能动调&#xff0c;只能静态分析。 下载 查壳 upx脱壳。 32ida打开。 动调报错。 重新打开&#xff0c;静态分析。 跟进关键函数。 不明白可以反汇编和汇编一起看。 溯源。 *decode 取值等于 by…

分布式锁之 防误删(优化之UUID防误删)

文章目录 1、AlbumInfoApiController --》testLock()2、AlbumInfoServiceImpl --》testLock()3、问题&#xff1a;删除操作缺乏原子性。 实现如下&#xff1a; 1、AlbumInfoApiController --》testLock() Tag(name "专辑管理") RestController RequestMapping(&quo…

【计网】从零开始掌握序列化与反序列化 --- 基础知识储备与程序重构

从零开始掌握序列化与反序列化 1 初识序列化与反序列化2 再谈Tcp协议3 程序重构3.1 Socket类3.2 回调函数设计3.3 最终的Tcp服务器类 1 初识序列化与反序列化 在刚学习计算机网络时&#xff0c;我们谈到过网络协议栈&#xff0c;其中最上层的就是应用层&#xff0c;那么这个应…

Qt圆角窗口

Qt圆角窗口 问题&#xff1a;自己重写了一个窗口&#xff0c;发现用qss设置圆角了&#xff0c;但是都不生效&#xff0c;不过子窗口圆角都生效了。 无边框移动窗口 bool eventFilter(QObject *watched, QEvent *evt) {static QPoint mousePoint;static bool mousePressed f…

开源、极简的B站第三方,建议所有人收藏

很多人说B站落寞了&#xff0c;但我觉得不是B站落寞&#xff0c;而是长视频落寞了。现代人已经没有充足的耐心&#xff0c;刷完一个十分钟的视频。毕竟&#xff0c;短视频可以把这十分钟切成50份&#xff0c;让我们开心50次。 可怕的是&#xff0c;B站即使落寞&#xff0c;在长…