前面介绍了常用类的函数相关操作,详细内容请前往 【Python入门第四讲】字符串(上篇)阅读。
这一篇 Python 字符串转义字符、运算符、以及格式化输出的相关知识
在编程语言中,转义字符用于表示一些特殊字符,这些字符本身难以直接表示或者具有特殊的含义。在Python字符串中,常见的转义字符以反斜杠 \
开始,后面跟着特殊字符。
具体说明请参考下表:
符号 | 说明 |
---|---|
\' | 单引号 |
\" | 双引号 |
\a | 发出系统响铃声 |
\0 | 空字符 |
\n | 换行符 |
\r | 回车符 |
\t | 横向制表符(Tab) |
\v | 纵向制表符 |
\f | 换页符 |
\ | 反斜杠 |
\o | 八进制表示符 |
\x | 十六进制表示符 |
\b | 退格符(Backspace) |
让我们选择一些常见的转义字符来演示一下效果:
# 单引号
print('这是一个单引号的例子:\' ')
# 双引号
print("这是一个双引号的例子:\" ")
# 响铃
print("这是一个响铃声的例子:\a ")
# 空字符
print("这是一个空字符的例子:\0 ")
# 换行
print("这是一个换行的例子:\n 第二行.")
# 回车
print("这是一个回车的例子:第一行. \r 第二行.")
# 制表符
print("这是一个制表符的例子:第一\t第二")
# 垂直制表符
print("这是一个垂直制表符的例子:第一\v第二")
# 换页
print("这是一个换页的例子:第一\f第二")
# 反斜杠
print("这是一个反斜杠的例子:\\ ")
# 八进制数
print("这是一个八进制转义的例子:\o12 ")
# 十六进制数
print("这是一个十六进制转义的例子:\x4e2d ")
# 退格
print("这是一个退格的例子:A\bB")
输出:
这是一个单引号的例子:'
这是一个双引号的例子:"
这是一个响铃声的例子:
这是一个空字符的例子:
这是一个换行的例子:
第二行.
第二行.
这是一个制表符的例子:第一 第二
这是一个垂直制表符的例子:第一第二
这是一个换页的例子:第一第二
这是一个反斜杠的例子:\
这是一个八进制转义的例子:\o12
这是一个十六进制转义的例子:N2d
这是一个退格的例子:B
字符串运算符与相关描述,请参考下表:
符号 | 说明 |
---|---|
+ | 拼接字符串 |
* | 重复输出字符串 |
[] | 通过索引取字符串元素 |
[:] | 截取部分字符串,遵循左闭右开原则 |
in | 成员运算符,判断字符串是否包含元素 |
not in | 成员运算符,与 in 相反 |
r/R | 原始字符串,让转义字符失效 |
% | 格式化字符串 |
+
使用加号 +
可以将两个字符串拼接在一起。
str1 = "Hello"
str2 = " World"
result = str1 + str2
print(result)
输出:
Hello World
*
使用乘号 *
可以重复一个字符串多次。
str1 = "Python "
result = str1 * 3
print(result)
输出:
Python Python Python
[]
使用方括号 []
可以通过索引访问字符串中的单个字符,索引从0开始。
str1 = "Python"
print(str1[0]) # P
print(str1[2]) # t
注意:字符串是不可变的,不能通过索引直接修改字符串中的字符。
[:]
使用切片操作可以获取字符串的子串,语法为 start:end
,包含起始索引 start
,但不包含结束索引 end
。
str1 = "Python"
print(str1[1:4]) # yth
如果不指定 start
,则默认为从字符串开头开始;如果不指定 end
,则默认为字符串末尾。
str1 = "Python"
print(str1[:3]) # Pyt
print(str1[2:]) # thon
in
和 not in
可以使用 in
来检查一个字符串是否包含在另一个字符串中,not in
则是检查是否不包含。
str1 = "Hello World"
print("Hello" in str1) # True
print("Python" not in str1) # True
r/R
原始字符串用于让转义字符失效,字符串前加上 r
或 R
。
path = r"C:\Users\Username\Documents"
print(path)
输出:
C:\Users\Username\Documents
%
字符串格式化可以使用 %
运算符。
name = "zhangsan"
age = 25
message = "My name is %s and I am %d years old." % (name, age)
print(message)
输出:
My name is zhangsan and I am 25 years old.
字符串格式化输出与相关描述,请参考下表:
符号 | 说明 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同 %e,用科学计数法格式化浮点数 |
%g | %f 和 %e 的简写 |
%G | %f 和 %E 的简写 |
format() | 格式化字符串的函数,Python 2.6 开始 |
f-string | 字面量格式化字符串,Python 3.6 开始 |
格式化操作符,常用辅助参数可参考下表:
辅助参数 | 描述 |
---|---|
m. n. | m 为最小宽度,n为小数点位数 |
- | 左对齐 |
+ | 添加符号 |
# | 八进制添加 0o、十六进制添加0x或0X |
0 | 显示数字时使用 0 取代空格 |
示例:
# 使用 %c 格式化字符
char = 'A'
print("Character: %c" % char)
# 使用 %s 格式化字符串
string_var = "Hello"
print("String: %s" % string_var)
# 使用 %d 格式化整数
integer_var = 42
print("Integer: %d" % integer_var)
# 使用 %o 格式化八进制整数
octal_var = 63
print("Octal: %o" % octal_var)
# 使用 %x 和 %X 格式化十六进制整数
hex_var = 255
print("Hex (lowercase): %x" % hex_var)
print("Hex (uppercase): %X" % hex_var)
# 使用 %f 格式化浮点数
float_var = 3.14159
print("Float: %f" % float_var)
# 使用 %e 和 %E 格式化科学计数法
scientific_var = 1.23e-4
print("Scientific (lowercase): %e" % scientific_var)
print("Scientific (uppercase): %E" % scientific_var)
# 使用 %g 和 %G 自动选择格式
auto_var = 0.000012345
print("Auto (lowercase): %g" % auto_var)
print("Auto (uppercase): %G" % auto_var)
# 使用 format() 方法格式化字符串
name = "Alice"
age = 30
height = 1.65
formatted_string = "Name: {}, Age: {}, Height: {:.2f}".format(name, age, height)
print(formatted_string)
# 使用 f-string 格式化字符串
name = "Bob"
age = 25
height = 1.75
formatted_string = f"Name: {name}, Age: {age}, Height: {height:.2f}"
print(formatted_string)
输出:
E:\StudyPython\venv\Scripts\python.exe E:\StudyPython\Lesson-one\str_down.py
Character: A
String: Hello
Integer: 42
Octal: 77
Hex (lowercase): ff
Hex (uppercase): FF
Float: 3.141590
Scientific (lowercase): 1.230000e-04
Scientific (uppercase): 1.230000E-04
Auto (lowercase): 1.2345e-05
Auto (uppercase): 1.2345E-05
Name: Alice, Age: 30, Height: 1.65
Name: Bob, Age: 25, Height: 1.75
进程已结束,退出代码0
在 Python 中,几种常用的字符串格式化方法:
类似于 C 语言的 printf
函数。使用 %
运算符插入变量或值。
name = "Alice"
age = 25
message = "My name is %s and I'm %d years old." % (name, age)
print(message)
str.format()
方法: 使用 {}
占位符,通过 str.format()
方法传入参数。
name = "Alice"
age = 25
message = "My name is {} and I'm {} years old.".format(name, age)
print(message)
以字面量字符串的形式表示,使用 {}
插入表达式。
name = "Alice"
age = 25
message = f"My name is {name} and I'm {age} years old."
print(message)
模板字符串:
使用 string.Template
类。
from string import Template
name = "Alice"
age = 25
template = Template("My name is $name and I'm $age years old.")
message = template.substitute(name=name, age=age)
print(message)
以上这些方法各有特点,可以根据实际情况选择最适合的方式。在 Python 3 推荐使用 f-string,因为它更简洁、直观,并且在性能上通常更优。
下面使用 Python 格式化输出打印九九乘法表的简单案例:
# 打印九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
# 使用 format 格式化,保留两位宽度,使输出整齐
print("{} * {} = {:2}".format(j, i, i * j), end=" ")
print() # 换行
# 或者
for i in range(1, 10):
for j in range(1, i + 1):
# 使用 {:2} 格式化,保留两位宽度,使输出整齐
print(f"{j} * {i} = {i * j:2}", end=" ")
print() # 换行
使用两个嵌套的循环,外层循环控制行数,内层循环控制每行输出的乘法表达式。在内层循环中,通过 f-string
进行字符串格式化,其中 :2
表示保留两位宽度,使得输出整齐。 end=" "
控制输出不换行,而是使用两个空格分隔每个乘法表达式。
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。