友链提交
请认真填写以下信息,谢谢!

博客信息

HoshinoAi
(请填写完整的网址,例如:https://www.example.com)
(贵站展示本站链接的页面地址,一般是友链页面,填写后将自动验证友链关系有效性)
(用于抓取文章)
(用于接收通知)
菜单
本页目录

五、字符串与转义字符

5.1字符串概念

Python字符串是一系列字符的有序序列,可以用单引号、双引号或三引号括起来表示,是Python中常用的数据类型之一。

# 把多个字符放置在单引号、双引号或者三引号中间
s1 = """你好"""
s2 = "你好"
s3 = '你好'
# python中可以利用type()函数查看数据的类型
print(type(s1))
print(type(s2))
print(type(s3))

5.2字符串的字符序号

正序012
字符串
倒序-3-2-1

5.3字符串的截取

5.3.1 字符串截取的语法

Python字符串的截取可以通过使用切片语法 string[start:stop:step] 实现

  • start 是起始索引
  • stop 是结束索引(不包括)
  • step 是步长。

5.3.2 字符串截取基本种类

设变量s=‘今天的课程是Python字符串’

  • 基本切片:string[start:stop],string[start:],string[:stop]
s[0:4] # 今天的课
s[4:] # 程是Python字符串
s[:6] #	今天的课程是
  • 带步长的切片:string[start:stop:step]
s[0:8:2] # 今的程P
  • 负索引切片:string[-start:-stop]
s[-4:-1] # n字符
  • 完整字符串复制:string[:]
s[:] # 今天的课程是Python字符串

###5.4 字符串变量

5.4.1 字符串变量的本质

字符串变量是指存储字符串值的变量。在Python中,你可以使用变量来存储字符串,然后对其进行操作、传递给函数等。 当你使用变量时,你实际上是在内存中创建了一个存储特定值的位置,并为该位置分配了一个名称。Python中的变量是动态的,因此你可以在程序执行过程中更改变量所引用的值。

下面是一个简单的例子,演示了如何创建一个字符串变量并随后更改它的值:

# 创建一个字符串变量
my_string = "Hello"

# 打印初始的字符串变量的值
print(my_string)  # 输出: Hello

# 将字符串变量的值更改为另一个字符串
my_string = "World"

# 打印更改后的字符串变量的值
print(my_string)  # 输出: World

在这个示例中,我们首先创建了一个名为 my_string 的字符串变量,并将字符串 "Hello" 赋给它。然后,我们将该变量的值更改为字符串 "World"。这是因为Python中的变量是动态的,可以根据需要引用不同的值。 来个图示更加容易理解

773aa6886040feb8d769135bacb48346.png

5.4.2 查看字符串变量的地址id(object)

在Python中,id() 函数用于返回对象的标识值,这个标识值是该对象在内存中的地址。每个对象在内存中都有一个唯一的标识值,可以通过 id() 函数获取。

id() 函数的基本语法是:

id(object)

其中 object 是要获取标识值的对象。

下面是一个简单的示例,演示了如何使用 id() 函数:

my_string = "Hello"
print(id(my_string))  # 输出一个整数值,表示字符串对象 "Hello" 的内存地址

my_list = [1, 2, 3]
print(id(my_list))  # 输出一个整数值,表示列表对象 [1, 2, 3] 的内存地址

id() 函数对于调试和理解Python中对象的生命周期和内存管理很有用。但需要注意的是,同一对象在不同的时间或不同的Python解释器中,其标识值可能会不同。

5.5 字符串比大小

在Python中,字符串的比较基于字符的Unicode码点值,按照字典顺序进行。可以使用比较运算符(<, <=, >, >=, ==, !=)来比较字符串。下面是一些例子:

5.5.1. 按字母顺序比较

print("apple" < "banana")  # 输出: True
print("apple" > "banana")  # 输出: False

5.5.2. 比较字符串长度(如果前面的字符相同):

print("apple" < "applepie")  # 输出: True
print("apple" > "app")       # 输出: True

5.5.3. 大小写敏感比较(大写字母的Unicode值小于小写字母):

print("Apple" < "apple")  # 输出: True
print("Apple" == "apple")  # 输出: False

5.5.4. 混合字符比较(按字符的Unicode值逐个比较):

print("a1" < "a2")  # 输出: True
print("a10" < "a2")  # 输出: True

这些比较方式适用于Python中的字符串比较,确保按字典顺序对字符串进行排序和比较。

5.6 字符串操作符

在Python中,有一些常见的字符串操作符,它们允许你执行各种操作,例如拼接、重复、成员检查等。下面是一些常见的字符串操作符:

5.6.1 加法操作符 +

  • 用于拼接字符串。
str1 = "Hello"
str2 = "World"
result = str1 + str2
print(result)  # 输出: HelloWorld

5.6.2. 乘法操作符 *

  • 用于重复字符串。
str1 = "Hello"
result = str1 * 3
print(result)  # 输出: HelloHelloHello

5.6.3. 成员操作符 innot in

  • 用于检查字符串是否包含某个子串。
my_string = "hello"
print("h" in my_string)     # 输出: True
print("world" not in my_string)  # 输出: True

5.6.4. 索引操作符 []

  • 用于访问字符串中的单个字符或子串。
my_string = "hello"
print(my_string[0])   # 输出: h
print(my_string[-1])  # 输出: o
print(my_string[1:4]) # 输出: ell

5.6.5. 切片操作符 [:]

  • 用于获取字符串的子串。
my_string = "hello"
print(my_string[:3])   # 输出: hel
print(my_string[2:])   # 输出: llo

这些操作符可以帮助你执行各种字符串操作,包括拼接、重复、检查成员、索引和切片等。

5.7 字符串修改与替换

在Python中,字符串是不可变(immutable)的数据类型,这意味着你不能直接修改字符串的内容。每次对字符串执行操作时,都会生成一个新的字符串对象,而原始字符串保持不变。 因此,如果你想修改字符串,通常的做法是创建一个新的字符串,其中包含所需的修改。这可以通过字符串的各种方法来实现,比如 replace()、split()、join() 等。

5.7.1 Replace()函数替换

在Python中,你可以使用 replace() 方法来进行字符串的替换。replace() 方法接受两个参数:要替换的子字符串和替换后的字符串。它返回一个新的字符串,其中所有出现的子字符串都被替换为指定的替换字符串。

replace() 是Python字符串对象的一个方法,用于替换字符串中的子串。它的基本语法是:

new_string = old_string.replace(old, new[, count])

其中:

  • old_string 是要进行替换操作的原始字符串。
  • old 是要被替换的子串。
  • new 是用来替换的新子串。
  • count 是可选参数,指定替换的次数。如果指定了 count,则只替换前 count 次出现的子串。如果不指定 count,则所有匹配的子串都会被替换。

replace() 方法会返回一个新的字符串,其中所有出现的 old 子串都被替换为 new 子串。

下面是一个简单的示例:

original_string = "Hello, World!World!World!"
new_string = original_string.replace("World", "Python")
print(new_string)  # 输出: Hello, Python!

在这个示例中,原始字符串 "Hello, World!" 中的 "World" 被替换为 "Python",生成了新的字符串 "Hello, Python!"。原始字符串 original_string 并没有改变,而是生成了一个新的字符串 new_string

5.7.2 旧式的字符串格式化替换

在Python中,你可以使用 % 符号来进行字符串格式化。这种方法被称为 "旧式的字符串格式化",它使用 % 运算符将格式化字符串和要插入其中的值结合起来。

基本的语法是:format_string % values

  • format_string 是包含格式化占位符的字符串,如 %s%d%f 等。
  • values 是要插入到格式化字符串中的值,可以是单个值或一个元组。

下面是一个简单的示例,演示了如何使用 % 运算符进行字符串替换:

name = "Alice"
age = 30
height = 5.8

# 使用 %s、%d、%f 等占位符进行字符串格式化
formatted_string = "Name: %s, Age: %d, Height: %.1f" % (name, age, height)
print(formatted_string)

在这个示例中,%s%d%.1f 是格式化占位符,它们分别代表字符串、整数和带有一位小数的浮点数。这些占位符会被后面的值替换,而 % 运算符左边的字符串就是格式化字符串。

虽然 % 格式化字符串在Python中仍然有效,但通常推荐使用更现代的方法,如 str.format() 方法或 f-strings(在Python 3.6及以上版本可用)。这些方法更直观、灵活,并且提供了更多的功能。

5.7.3 format()函数替换

在Python中,format() 方法提供了一种更灵活和现代的方式来进行字符串格式化。它允许你在字符串中使用占位符,并使用 format() 方法将这些占位符替换为实际的值。

基本的语法是:

formatted_string = "format_string".format(arguments)

其中 format_string 是包含格式化占位符 {} 的字符串,arguments 是要插入到格式化字符串中的值。

下面是一个简单的示例,演示了如何使用 format() 方法进行字符串替换:

name = "Alice"
age = 30
height = 5.8

# 使用 format() 方法进行字符串格式化 按顺序
formatted_string = "Name: {}, Age: {}, Height: {}".format(name, age, height)
print(formatted_string)

在这个示例中,大括号 {} 是格式化占位符,它们将被 format() 方法的参数替换。format() 方法可以接受任意数量的参数,并按顺序将它们替换到格式化字符串中。你还可以使用具名参数来更清晰地指定要替换的值。

# 使用具名参数
formatted_string = "Name: {name}, Age: {age}, Height: {height}".format(name=name, age=age, height=height)
print(formatted_string)
# 按指定序号
formatted_string = "Name: {0}, Age: {1}, Height: {2}".format(name, age, height)
print(formatted_string)

使用 format() 方法进行字符串替换比使用 % 运算符更灵活和更易读,因此通常被推荐作为首选的字符串格式化方法。

5.7.4 f-strings替换

f-strings 是 Python 3.6 及更高版本引入的一种字符串格式化方法,它提供了一种简洁、直观的方式来在字符串中插入变量的值。

在 f-strings 中,你可以在字符串前面加上 fF 前缀,然后在字符串中使用花括号 {} 将变量名放入其中。在字符串中的这些花括号内的表达式将会被计算,并用计算结果替换它们。

下面是一个示例:

name = "Alice"
age = 30

formatted_string = f"Name: {name}, Age: {age}"
print(formatted_string)

在这个示例中,f 前缀指示这是一个 f-string。在字符串中的花括号 {} 内,可以放置变量名或任何表达式,它们将被计算,并用计算结果替换。

f-strings 是一种强大而直观的字符串格式化方法,它使得代码更易读、更易维护。相对于以前的格式化方法(如 format() 方法和 % 格式化字符串),f-strings 更简洁,而且通常更快。

5.8 字符串常见函数

字符串在Python中有很多常用的函数和方法,这些函数和方法可以帮助你处理和操作字符串。以下是一些常用的字符串函数和方法:

5.8.1. len()

返回字符串的长度(字符数)。

my_string = "Hello"
print(len(my_string))  # 输出: 5

5.8.2. upper()lower()

将字符串转换为大写或小写。

my_string = "Hello"
print(my_string.upper())  # 输出: HELLO
print(my_string.lower())  # 输出: hello

5.8.3. capitalize()title()

将字符串的第一个字符大写或每个单词的第一个字符大写。

my_string = "hello world"
print(my_string.capitalize())  # 输出: Hello world
print(my_string.title())       # 输出: Hello World

5.8.4. count(substring)

返回字符串中子串出现的次数。

my_string = "hello world"
print(my_string.count("l"))  # 输出: 3

5.8.5. find(substring)index(substring)

返回子串在字符串中第一次出现的位置。

my_string = "hello world"
print(my_string.find("world"))  # 输出: 6
print(my_string.index("world")) # 输出: 6

5.8.6. replace(old, new)

将字符串中的指定子串替换为新的子串。

my_string = "hello world"
new_string = my_string.replace("world", "Python")
print(new_string)  # 输出: hello Python

5.8.7. split(separator)

将字符串分割成子串列表,分割符为指定的分隔符。

my_string = "hello world"
words = my_string.split(" ")
print(words)  # 输出: ['hello', 'world']

5.8.8. join(iterable)

将字符串列表中的每个字符串连接起来,用指定的分隔符隔开。

words = ['hello', 'world']
my_string = " ".join(words)
print(my_string)  # 输出: hello world

在Python中,有一些函数可以用于判断字符串的特性,例如是否全部由数字组成、是否全部由字母组成等。以下是一些常用的字符串判断相关函数:

5.8.9. isalpha()

如果字符串中的所有字符都是字母,则返回 True;否则返回 False。

my_string = "Hello"
print(my_string.isalpha())  # 输出: True

5.8.10. isdigit()

如果字符串中的所有字符都是数字,则返回 True;否则返回 False。

my_string = "12345"
print(my_string.isdigit())  # 输出: True

5.8.11. isalnum()

如果字符串中的所有字符都是字母或数字,则返回 True;否则返回 False。

my_string = "Hello123"
print(my_string.isalnum())  # 输出: True

5.8.12. islower()isupper()

分别判断字符串中的所有字符是否都是小写或大写。

my_string = "hello"
print(my_string.islower())  # 输出: True

my_string = "HELLO"
print(my_string.isupper())  # 输出: True

5.8.13. isspace()

如果字符串中的所有字符都是空格,则返回 True;否则返回 False。

my_string = "   "
print(my_string.isspace())  # 输出: True

5.8.14. startswith(prefix)endswith(suffix)

判断字符串是否以指定的前缀或后缀开头或结尾。

my_string = "hello world"
print(my_string.startswith("hello"))  # 输出: True
print(my_string.endswith("world"))    # 输出: True

这些是Python中字符串常用的一些函数和方法,它们可以帮助你对字符串进行各种操作,包括大小写转换、查找子串、替换子串、分割字符串、字符串的特性,从而执行相应的逻辑操作等。

5.9 字符串常见应用top

5.9.1. 字符串去空格

在Python中,你可以使用 strip() 方法来去除字符串两端的空格(包括空格、制表符和换行符)。如果你只想去除字符串左边的空格,可以使用 lstrip() 方法;如果只想去除右边的空格,可以使用 rstrip() 方法。

以下是这些方法的使用示例:

5.9.1.1 strip() 方法:

my_string = "  hello world  "
stripped_string = my_string.strip()
print(stripped_string)  # 输出: "hello world"

5.9.1.2. lstrip() 方法:

my_string = "  hello world  "
left_stripped_string = my_string.lstrip()
print(left_stripped_string)  # 输出: "hello world  "

5.9.1.3. rstrip() 方法:

my_string = "  hello world  "
right_stripped_string = my_string.rstrip()
print(right_stripped_string)  # 输出: "  hello world"

这些方法可以帮助你去除字符串中的不需要的空格,从而清理字符串的格式。

5.10 常用转义字符

在Python中,转义字符用于表示一些特殊的字符,例如换行符、制表符等。以下是一些常见的Python转义字符:

5.10.1 表格展示常用转义字符

转义字符描述
\n换行符。它将光标移动到下一行的开头。
\t制表符。它在输出时会产生一个水平制表符,通常相当于四个空格。
\\反斜杠。用于表示反斜杠字符本身。
\'\"单引号和双引号。用于在字符串中包含引号。
\b退格符。用于在输出中产生一个退格(删除)操作。
\r回车符。它将光标移动到当前行的开头。

5.10.2 代码展示常用转义字符

5.10.2.1. \n

换行符。它将光标移动到下一行的开头。

print("Hello\nWorld")
# 输出:
# Hello
# World

5.10.2.2. \t

制表符。它在输出时会产生一个水平制表符,通常相当于四个空格。

print("Hello\tWorld")
# 输出: Hello    World

5.10.2.3. \\

反斜杠。用于表示反斜杠字符本身。

print("C:\\Users\\")
# 输出: C:\Users\

5.10.2.4. \'\"

单引号和双引号。用于在字符串中包含引号。

print("She said, \"Hello!\"")
# 输出: She said, "Hello!"

5.10.2.5. \b

退格符。用于在输出中产生一个退格(删除)操作。

print("Hello\bWorld")
# 输出: HellWorld

5.10.2.6. \r

回车符。它将光标移动到当前行的开头。

print("Hello\rWorld")
# 输出: World

这些转义字符可以在字符串中使用,以表示字符串中的特殊含义。