前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python入门第五讲】字符串(下篇)

【Python入门第五讲】字符串(下篇)

原创
作者头像
不惑
发布2024-01-23 08:17:00
2130
发布2024-01-23 08:17:00
举报
文章被收录于专栏:Python基础系列Goboy

前言

前面介绍了常用类的函数相关操作,详细内容请前往 【Python入门第四讲】字符串(上篇)阅读。

这一篇 Python 字符串转义字符运算符、以及格式化输出的相关知识

转义字符

在编程语言中,转义字符用于表示一些特殊字符,这些字符本身难以直接表示或者具有特殊的含义。在Python字符串中,常见的转义字符以反斜杠 \ 开始,后面跟着特殊字符。

具体说明请参考下表:

符号

说明

\'

单引号

\"

双引号

\a

发出系统响铃声

\0

空字符

\n

换行符

\r

回车符

\t

横向制表符(Tab)

\v

纵向制表符

\f

换页符

\

反斜杠

\o

八进制表示符

\x

十六进制表示符

\b

退格符(Backspace)

让我们选择一些常见的转义字符来演示一下效果:

代码语言:python
代码运行次数:0
复制
# 单引号
print('这是一个单引号的例子:\' ')

# 双引号
print("这是一个双引号的例子:\" ")

# 响铃
print("这是一个响铃声的例子:\a ")

# 空字符
print("这是一个空字符的例子:\0 ")

# 换行
print("这是一个换行的例子:\n 第二行.")

# 回车
print("这是一个回车的例子:第一行. \r 第二行.")

# 制表符
print("这是一个制表符的例子:第一\t第二")

# 垂直制表符
print("这是一个垂直制表符的例子:第一\v第二")

# 换页
print("这是一个换页的例子:第一\f第二")

# 反斜杠
print("这是一个反斜杠的例子:\\ ")

# 八进制数
print("这是一个八进制转义的例子:\o12 ")

# 十六进制数
print("这是一个十六进制转义的例子:\x4e2d ")

# 退格
print("这是一个退格的例子:A\bB")

输出:

代码语言:python
代码运行次数:0
复制
这是一个单引号的例子:' 
这是一个双引号的例子:" 
这是一个响铃声的例子: 
这是一个空字符的例子:  
这是一个换行的例子:
 第二行.
 第二行.
这是一个制表符的例子:第一	第二
这是一个垂直制表符的例子:第一第二
这是一个换页的例子:第一第二
这是一个反斜杠的例子:\ 
这是一个八进制转义的例子:\o12 
这是一个十六进制转义的例子:N2d 
这是一个退格的例子:B

字符串运算符

字符串运算符与相关描述,请参考下表:

符号

说明

+

拼接字符串

*

重复输出字符串

[]

通过索引取字符串元素

[:]

截取部分字符串,遵循左闭右开原则

in

成员运算符,判断字符串是否包含元素

not in

成员运算符,与 in 相反

r/R

原始字符串,让转义字符失效

%

格式化字符串

拼接字符串:+

使用加号 + 可以将两个字符串拼接在一起。

代码语言:python
代码运行次数:0
复制
str1 = "Hello"
str2 = " World"
result = str1 + str2
print(result)

输出:

代码语言:javascript
复制
Hello World

重复字符串:*

使用乘号 * 可以重复一个字符串多次。

代码语言:python
代码运行次数:0
复制
str1 = "Python "
result = str1 * 3
print(result)

输出:

代码语言:javascript
复制
Python Python Python 

通过索引取字符串元素:[]

使用方括号 [] 可以通过索引访问字符串中的单个字符,索引从0开始。

代码语言:python
代码运行次数:0
复制
str1 = "Python"
print(str1[0])  # P
print(str1[2])  # t

注意:字符串是不可变的,不能通过索引直接修改字符串中的字符。

截取部分字符串:[:]

使用切片操作可以获取字符串的子串,语法为 start:end,包含起始索引 start,但不包含结束索引 end

代码语言:python
代码运行次数:0
复制
str1 = "Python"
print(str1[1:4])  # yth

如果不指定 start,则默认为从字符串开头开始;如果不指定 end,则默认为字符串末尾。

代码语言:python
代码运行次数:0
复制
str1 = "Python"
print(str1[:3])   # Pyt
print(str1[2:])   # thon

成员运算符 innot in

可以使用 in 来检查一个字符串是否包含在另一个字符串中,not in 则是检查是否不包含。

代码语言:python
代码运行次数:0
复制
str1 = "Hello World"
print("Hello" in str1)      # True
print("Python" not in str1)  # True

原始字符串:r/R

原始字符串用于让转义字符失效,字符串前加上 rR

代码语言:python
代码运行次数:0
复制
path = r"C:\Users\Username\Documents"
print(path)

输出:

代码语言:javascript
复制
C:\Users\Username\Documents

格式化字符串:%

字符串格式化可以使用 % 运算符。

代码语言:python
代码运行次数:0
复制
name = "zhangsan"
age = 25
message = "My name is %s and I am %d years old." % (name, age)
print(message)

输出:

代码语言:javascript
复制
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 取代空格

示例:

代码语言:python
代码运行次数: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)

输出:

代码语言:python
代码运行次数:0
复制
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 函数。使用 % 运算符插入变量或值。

代码语言:python
代码运行次数:0
复制
name = "Alice"
age = 25
message = "My name is %s and I'm %d years old." % (name, age)
print(message)

str.format() 方法:

使用 {} 占位符,通过 str.format() 方法传入参数。

代码语言:python
代码运行次数:0
复制
name = "Alice"
age = 25
message = "My name is {} and I'm {} years old.".format(name, age)
print(message)

f-string(格式化字符串字面量):

以字面量字符串的形式表示,使用 {} 插入表达式。

代码语言:python
代码运行次数:0
复制
name = "Alice"
age = 25
message = f"My name is {name} and I'm {age} years old."
print(message)

模板字符串:

使用 string.Template 类。

代码语言:python
代码运行次数:0
复制
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 格式化输出打印九九乘法表的简单案例:

代码语言:python
代码运行次数:0
复制
# 打印九九乘法表
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=" " 控制输出不换行,而是使用两个空格分隔每个乘法表达式。

代码语言:python
代码运行次数:0
复制
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  

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 转义字符
  • 字符串运算符
    • 拼接字符串:+
      • 重复字符串:*
        • 通过索引取字符串元素:[]
          • 截取部分字符串:[:]
            • 成员运算符 in 和 not in
              • 原始字符串:r/R
                • 格式化字符串:%
                • 字符串格式化输出
                • 字符串格式化方法
                  • 百分号格式化(%):
                    • str.format() 方法:
                      • f-string(格式化字符串字面量):
                        • 九九乘法表
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档