文章目录
- 一、Python字符串
- 1.介绍
- 2.与C语言字符串比较
- 2.1 相同点
- 2.2 不同点
- 3.创建Python字符串
- 3.1 使用单引号
- 3.2 使用双引号
- 3.3 使用三引号
- 二、访问字符串中的值
- 1.索引方式
- 2.截取方式
- 三、Python 转义字符
- 1.续行符\(在行尾时)
- 2.反斜杠符号\\
- 3.单引号\'
- 4.双引号\"
- 5.响铃\a
- 6.退格\b
- 7.空\000
- 8.换行\n
- 9.纵向制表符\v
- 10.横向制表符\t
- 11.回车\r
- 12.换页\f
- 13.八进制数\yyy
- 14.十六进制数\xyy
- 四、Python字符串运算符
- 1.字符串连接+
- 2.重复输出字符串*
- 3.通过索引获取字符串中字符
- 4.截取字符串
- 5.成员运算符
- 6.原始字符串
- 五、Python 字符串格式化
- 1.字符串格式化符号
- 2.格式化操作符辅助指令
- 3.f-string 格式化字符串
- 3.1 插入变量
- 3.2 插入表达式
- 3.3 调用函数
- 3.4 格式化数字
- 六、Python 的字符串内建函数
- 1.len(string)
- 2.str()
- 3.lower()
- 4.upper()
- 5.strip()
- 6.replace()
- 7.split():
- 8.join()
- 9.startswith()
- 10.endswith()
- 七、总结
一、Python字符串
1.介绍
Python字符串是一种数据类型,用于存储和操作文本数据。它可以包含任意字符,如字母、数字、符号和空格。在Python中,字符串是不可变的,意味着一旦创建,就不能更改其内容。
2.与C语言字符串比较
2.1 相同点
- 字符串都是以字符序列的形式存储文本数据。
- 都支持基本的字符串操作,如拼接、截取、比较等。
- 都可以使用索引和切片操作访问字符串的特定字符或子字符串。
2.2 不同点
- C语言中的字符串是以字符数组的形式表示,以null字符(‘\0’)作为字符串的结束标志。而Python中的字符串没有长度限制,并且不需要特殊字符来表示结尾。
- 在C语言中,字符串的长度需要手动计算或使用库函数来获取,而Python中可以使用len()函数直接获得字符串的长度。
- Python字符串是不可变的,即不能通过索引或切片修改字符串的字符。而C语言中的字符串是可变的,可以直接修改字符串的内容。
- Python提供了丰富的字符串处理方法和内置函数,如字符串拼接、分割、查找、替换等,使字符串的操作更加便捷。C语言中的字符串操作相对较为繁琐,需要手动编写相应的代码来完成。
3.创建Python字符串
在Python中,字符串可以通过单引号、双引号或三引号来创建。
3.1 使用单引号
str1 = 'hello world'
print(str1) # 输出:hello world
3.2 使用双引号
str2 = "Python is awesome"
print(str2) # 输出:Python is awesome
3.3 使用三引号
str3 = '''hello world
python'''
print(str3)
# 输出:
# hello world
# python
# 注意,使用三引号创建的字符串可以跨越多行,打印时会保留原始的换行符。
无论使用哪种方式创建字符串,一旦创建后就不能更改其内容。例如:
str1 = 'hello world'
str1[0] = 'H' # 会报错,因为字符串是不可变的
如果需要修改字符串中的某个字符,可以通过创建一个新的字符串并赋值给原始字符串变量来实现。
str1 = 'hello world'
str1 = 'Hello' # 创建一个新的字符串并赋值给str1
print(str1) # 输出:Hello
如果两个字符串完全一样,可以写成这样:
str1 = 'hello'
str2 = str1 # 将str2赋值给str1
print(str2) # 输出:hello
二、访问字符串中的值
1.索引方式
在 Python 中,可以通过使用下标(索引)来访问字符串中的值。字符串中的每个字符都有一个对应的下标,从 0 开始递增。
str = 'hello'
print(str[0]) # 输出:h
print(str[1]) # 输出:e
print(str[2]) # 输出:l
print(str[3]) # 输出:l
print(str[4]) # 输出:o
需要注意的是,Python 中的字符串是不可变的,因此不能直接通过下标来修改字符串中的字符。如果尝试这样做,会导致 TypeError 错误。
2.截取方式
与下标索引不同的是,切片允许你访问字符串中的多个字符。你可以指定一个起始下标和一个终止下标,然后 Python 将返回该范围内的所有字符。
str = 'hello'
print(str[1:4]) # 输出:ell
在这个示例中,我们使用切片 [1:4] 访问字符串 str 中的一部分。这将返回从下标 1 到下标 3 (不包括 4)之间的所有字符。
需要注意的是,切片操作也不会修改原始字符串,而是返回一个新的字符串。因此,Python 的字符串仍然是不可变的。
三、Python 转义字符
转义字符是由反斜杠 \ 后面跟着一个特定字符组成的。
1.续行符(在行尾时)
# 续行符
print("xiao \bu \ding") # 输出xiao bu ding
2.反斜杠符号\
# 反斜杠
print('C:\\path\\to\\file') # 输出C:\path\to\file
3.单引号’
# 单引号
print('He said, "Hello!"') # 输出He said, "Hello!"
4.双引号"
# 双引号
print("She's happy.") # 输出She's happy.
5.响铃\a
当你在字符串中使用 \a,它会触发系统发出一个声音或者其他与响铃相关的行为。
但是需要注意的是,不是所有的终端或操作系统都会对 \a 响铃字符做出声音或其他反应。有些终端会忽略它,而有些终端可能会发出嘀嗒声、闪烁光标或其他形式的提示。
# 响铃
print('Hello \a World')
6.退格\b
# 退格
print("Hello \b World!") # 输出Hello World!
7.空\000
# 空
print("\000")
8.换行\n
# 换行符
print('Hello\nWorld')
# Hello
# World
9.纵向制表符\v
纵向制表符 \v 用于在文本中创建垂直制表位,可以使后续文本在输出时垂直对齐。然而,大多数终端对纵向制表符的显示效果可能与预期不符,可能会被忽略或以其他方式处理。
# 纵向制表符
print('Hello\vWorld') # 可能无法正常显示纵向制表符
10.横向制表符\t
横向制表符 \t 用于在文本中创建水平制表位,可以将后续文本对齐到下一个制表符位置。在终端上,横向制表符通常会将光标移动到下一个制表符位置,以实现对齐效果。
# 横向制表符
print('Name\tAge') # 输出Name Age
11.回车\r
# 回车
print("Hello\rWorld!") # 输出World!
使用 \r 实现百分比进度
import timefor i in range(21):print("\r{:3}%".format(i),end=' ')time.sleep(0.05)
12.换页\f
\f 是一个转义字符,表示换页符。它在输出中会产生特殊效果,将光标移动到下一页或下一页面的开头位置。
然而,在大多数终端和文本编辑器中,默认情况下,换页符 \f 的效果可能不明显或不可见。因此,print(“Hello \f World!”) 在大多数情况下会与 print(“Hello World!”) 产生相同的输出结果。
# 换页
print("Hello \f World!") # 输出Hello World!
13.八进制数\yyy
八进制数,y 代表 0~7 的字符,例如:\012 代表换行。
# 八进制数
print("\110\145\154\154\157\40\127\157\162\154\144\41") # 输出Hello World!
14.十六进制数\xyy
十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行
# 十六进制数
print("\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21") # 输出Hello World!
四、Python字符串运算符
1.字符串连接+
a = "Hello"
b = "World"print("a + b 输出结果:", a + b) # a + b 输出结果: HelloWorld
2.重复输出字符串*
a = "Hello"
b = "World"print("a * 2 输出结果:", a * 2) # a * 2 输出结果: HelloHello
3.通过索引获取字符串中字符
a = "Hello"print("a[1] 输出结果:", a[1]) # a[1] 输出结果: e
4.截取字符串
截取字符串中的一部分,遵循左闭右开原则,a[1:4] 是不包含第 4 个字符的。
a = "Hello"
b = "World"print("a[1:4] 输出结果:", a[1:4]) # a[1:4] 输出结果: ell
5.成员运算符
in成员运算符 - 如果字符串中包含给定的字符返回 True
not in成员运算符 - 如果字符串中不包含给定的字符返回 True
a = "Hello"if( "H" in a) :print("H 在变量 a 中")
else :print("H 不在变量 a 中")if( "M" not in a) :print("M 不在变量 a 中")
else :print("M 在变量 a 中")
6.原始字符串
在 Python 中,前缀为 r 或 R 的字符串表示原始字符串,不会对反斜杠进行转义处理。因此,print( r’\n’ ) 和 print( R’\n’ ) 的输出结果都将是 \n,而不会被解释为换行符。
print( r'\n' ) # 输出 \n
print( R'\n' ) # 输出 \n
五、Python 字符串格式化
1.字符串格式化符号
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。
name = "Alice"
age = 25
print("My name is %s and I am %d years old." % (name, age)) # My name is Alice and I am 25 years old.
剩下的就不一一列举了,有兴趣的研究下。
符号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
2.格式化操作符辅助指令
符合 | 功能 |
---|---|
* | 定义宽度或者小数点精度 |
- | 用作左对齐 |
+ | 在正数前面显示加号 |
在正数前面显示空格 | |
# | 在八进制前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’ |
0 | 显示的数字前面填充’0’而不是默认的空格 |
% | ‘%%‘输出一个单一的’%’ |
(var) | 映射变量(字典参数) |
m.n. | m是显示的最小总宽度,n是小数点后的位数(如果可用的话) |
这里举一个实例来说明*的作用:
当使用*符号作为格式化操作符的辅助指令时,它可以用来动态定义宽度或者小数点精度。这意味着你可以在运行时指定宽度或者小数点精度的数值。
width = 10
precision = 4
value = 123.456789
print("The value is: %*.*f" % (width, precision, value))
# 输出:The value is: 123.4568
在这个示例中,%*.f中的两个分别代表宽度和小数点精度。在字符串之后的%后面,我们使用元组(width, precision, value)来动态传入宽度和小数点精度的值。因此,width的值被用来定义输出的宽度,precision的值被用来定义小数点后的位数。
3.f-string 格式化字符串
f-string 是 python3.6 之后版本添加的,f-string是一种字符串格式化的方式,可以在字符串中嵌入变量、表达式和函数的值。
f-string使用的语法是在字符串前面加上字母"f"或"F",然后用花括号{}包裹要插入的变量、表达式或函数的值。
3.1 插入变量
在下面的示例中,我们使用f-string将name和age的值插入到字符串中。
name = "Alice"
age = 25
print(f"My name is {name} and I am {age} years old.")
# 输出:My name is Alice and I am 25 years old.
3.2 插入表达式
在下面的示例中,我们使用f-string将表达式num1 + num2的结果插入到字符串中。
num1 = 10
num2 = 5
print(f"The sum of {num1} and {num2} is {num1 + num2}.")
# 输出:The sum of 10 and 5 is 15.
3.3 调用函数
在下面的示例中,我们使用f-string将函数double的返回值插入到字符串中。
def double(x):return 2 * xnum = 5
print(f"Double of {num} is {double(num)}.")
# 输出:Double of 5 is 10.
3.4 格式化数字
在下面的示例中,我们使用f-string将格式化后的total值插入到字符串中,保留两位小数并加上美元符号。
price = 3.99
quantity = 2
total = price * quantity
print(f"The total is ${total:.2f}.")
# 输出:The total is $7.98.
六、Python 的字符串内建函数
在 Python 3.10 版本中,一共有 40 个字符串内建函数,这里选几个常用的进行介绍。
1.len(string)
获取字符串的长度。
string = "Hello, world!"
print(len(string))
# 输出:13
2.str()
将其他类型的变量转换为字符串类型。
num = 123
string = str(num)
print(string)
# 输出:"123"
3.lower()
将字符串中所有的大写字母转换为小写字母
string = "HeLLo, WoRLd!"
print(string.lower())
# 输出:"hello, world!"
4.upper()
将字符串中所有的小写字母转换为大写字母。
string = "HeLLo, WoRLd!"
print(string.upper())
# 输出:"HELLO, WORLD!"
5.strip()
去除字符串开头和结尾的空格或指定字符。
string = "###Hello, world!###"
print(string.strip("#"))
# 输出:"Hello, world!"
6.replace()
替换字符串中的某个子串。
string = "Hello, world!"
print(string.replace("world", "Python"))
# 输出:"Hello, Python!"
7.split():
将字符串按一个分隔符分割成多个子串,并返回一个列表。
string = "Hello, world!"
print(string.split(", "))
# 输出:["Hello", "world!"]
8.join()
将多个字符串连接成一个字符串。
list = ["Hello", "world!"]
print(", ".join(list))
# 输出:"Hello, world!"
9.startswith()
判断字符串是否以某个子串开头。
string = "Hello, world!"
print(string.startswith("Hello"))
# 输出:True
10.endswith()
判断字符串是否以某个子串结尾。
string = "Hello, world!"
print(string.endswith("world!"))
# 输出:True
需要注意的是,Python字符串内建函数的返回值通常是一个新的字符串对象,原字符串不会被修改。如果需要修改字符串本身,可以使用字符串的赋值操作或者其他相关操作。
七、总结
今天主要讲了Python的字符串的相关内容。
感谢你的观看,谢谢!