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