1.3.3 str 字符串
字符串特点:
- 只可以存储字符串
- 长度任意(取决于内存大小)
- 支持下标索引
- 允许重复字符串存在
- 不可以修改(修改/增加/删除元素等) –
tips
: 不可修改字符串本身,但可通过replace
替换得到一个新字符串 - 支持
while / for
循环
方法 | 描述 |
---|---|
字符串[下标] | 根据下标索引获取值 |
字符串.index(字符串) | 查找指定字符的第一个匹配项的下标 |
字符串.replace(字符串1, 字符串2) | 将字符串内的全部 字符串 1,替换为 字符串 2 ,不会修改原字符串,而是得到一个新的字符串 |
字符串.split(字符串) | 分隔字符串,不会修改原字符串,而是得到一个新的列表 |
字符串.strip() /字符串.strip(字符串) | 移除首尾的空格和换行符或指定字符串 |
字符串.count(字符串) | 统计字符串内某字符串的出现次数 |
len(字符串) | 统计字符串的字符个数 |
实例:获取字符串str
(原始字符串)从索引0
(包括)到索引5
(不包括)之间的子字符串。
实现原理:在Python
中,字符串是不可变的,这意味着它们在内存中的表示是连续的字节序列。因此,通过索引访问字符串中的字符是高效的。当使用索引访问字符串时,Python
会返回一个字节对象,而不是一个字符串。然而,在打印时,Python
会自动将字节对象转换为字符串。
用途:在处理字符串时,经常需要从某个索引处截取字符串,以便进行进一步的操作。这种情况下,使用字符串索引就非常高效。
注意事项:
- 字符串的索引是从
0
开始的,而不是从1
开始。因此,要取字符串的前5个字符,需要使用str[0:5]
而不是str[:5]
。 - 字符串的索引是左闭右开,这意味着
str[0:5]
表示从索引0开始,到索引5(不包括)结束。如果要取字符串的最后一个字符,可以使用str[-1]
,而不是str[len(str) - 1]
。 - 如果要取字符串的某个子字符串,可以使用切片操作,例如
str[start:end]
,其中start
和end
是起始和结束索引。如果start
和end
没有被指定,它们将默认为0
和字符串的长度。
str = "Hello World"
new_str = str[0:5]
print(new_str) # 输出结果 Hello
实例:替换字符串中的某个字符串为另一个字符串。
实现原理:使用字符串的replace()
方法,该方法接受两个参数:要被替换的子字符串和用于替换的新子字符串。在这个例子中,我们将字符串"Hello World"中的"World"替换为"Python"。
这段代码的用途是将简单的字符串操作封装成一个函数,例如在文章处理中,当需要替换文章中的特定词汇时,可以使用这样的代码。
注意事项:
- 方法的参数应该是字符串类型(
str
)。 - 方法返回一个新的字符串,通常会将原始字符串修改后返回。
- 如果要替换的字符串不存在,
replace()
方法将返回原始字符串,不会执行任何替换操作。
str = "Hello World"
new_str = str.replace("World", "Python")
print(new_str) # 输出结果 Hello Python
实例:对字符串进行大小写转换
实现原理是:在 Python中,字符串是 immutable
的,这意味着它们没有提供修改字符串内容的方法。但是,Python提供了字符串的转换方法,如lower()
和upper()
,这些方法会返回一个新的字符串,原字符串不会被修改。
- 定义一个字符串变量
str
,赋值为"Hello World"。 - 使用
str.lower()
方法将str
变小写,并将结果赋值给变量lower_str
。 - 使用
str.upper()
方法将str
变大写,并将结果赋值给变量upper_str
。
用途:在Python中,经常需要将字符串转换为不同的大小写形式,例如在处理用户输入或从数据库中检索数据时。lower()
和upper()
方法非常有用,因为它们不修改原始字符串,而是创建一个新的字符串并返回。
注意事项:如果需要将大写字母转换为小写字母,建议使用lower()
方法,因为它是内置的字符串方法,代码更简洁,性能也更好。如果需要将小写字母转换为大写字母,可以使用upper()
方法。
str = "Hello World"
lower_str = str.lower()
upper_str = str.upper()
print(lower_str, upper_str) # 输出结果 hello world HELLO WORLD
实例:将一个字符串(“Hello World”)根据空格进行切割,并将切割后的结果存储在一个列表(strlist)中,然后打印出这个列表。
实现原理:
- 使用
split()
方法,该方法接受一个参数,即切割的标志。在这里,我们使用空格(" ")作为切割标志。 split()
方法会返回一个列表,其中包含切割后的子字符串。- 我们将切割后的子字符串存储在
strlist
变量中,然后使用print()
函数打印出这个列表。
用途: 这个代码片段通常用于学习 Python 字符串操作。它可以帮助用户了解如何使用split()
方法根据某个标志(例如空格)将字符串切割成多个子字符串,并将结果存储在一个列表中。
注意事项:
- 字符串和列表都是可变的,因此它们在 Python 中可以被修改。在本例中,我们没有对
strlist
列表进行修改,而是直接打印了原始列表。在实际应用中,如果需要对列表进行修改,建议使用append()
、extend()
、insert()
等方法来添加或修改元素,以避免混淆。 - 由于
split()
方法返回的是一个包含切割后子字符串的列表,因此原始字符串不会被修改。这在某些情况下非常有用,例如,我们可以通过其他方法来处理这些子字符串,而不会影响原始字符串。
str = "Hello World"
strlist = str.split(" ")
print(strlist) # 输出结果 ["Hello", "World"]
实例:将两个字符串元素(“Hello” 和 “World”)连接成一个字符串,并使用空格作为分隔符。
实现原理:将join()
方法应用于一个列表(strlist
),该方法会返回一个字符串,其中包含列表中元素之间的分隔符。
用途:
- 当你需要将几个字符串元素连接成一个字符串时,可以使用
join()
方法。 - 使用
join()
方法时,可以指定一个分隔符,以便在字符串元素之间插入。
注意事项:
- 确保在使用
join()
方法之前,列表中的元素都是字符串类型。 - 如果你想在连接的字符串中使用其他分隔符(例如逗号、句号等),可以使用
join()
方法的其他参数,例如join(strlist, ', ')
,这将使用逗号和空格作为分隔符。
strlist = ["Hello", "World"]
str = " ".join(strlist)
print(str) # 输出结果 Hello World
实例:使用strip()
函数,从字符串的开头和结尾分别移除指定的字符。在这个例子中,我们要从字符串的开头和结尾移除字符!
实现原理:strip()
函数是Python中的字符串方法,它接受一个参数,即要移除的字符。这个函数会从字符串的开头和结尾分别移除指定的字符。如果没有指定字符,则默认移除空格。
用途:在处理字符串时,有时需要移除字符串开头和结尾的字符,以达到某些目的(例如,去除字符串中的特殊标记或格式化字符)。
注意事项:
strip()
函数是字符串的方法,可以直接在字符串上调用。在上面的代码中,我们直接在str
上调用strip()
函数。- 如果要移除的字符不是单个字符,而是字符串,则需要使用两个单引号或双引号括起来,以便
strip()
函数正确识别。例如,如果要移除字符串"!"
,可以使用str.strip("!")
。 - 确保提供的要移除的字符是正确的。如果传入的字符不在字符串的开头和结尾,或者字符串中不存在要移除的字符,
strip()
函数将不会执行任何操作,返回原始字符串。 strip()
函数会返回一个新字符串,原始字符串不会被修改。如果需要修改原始字符串,可以使用其他字符串操作函数,如replace()
、join()
等。
str = "!!! my name is qlee !!!"
print(str.strip("!")) # 输出结果 my name is qlee
实例:检查字符串 “Hello12_” 是否是一个有效的标识符。在 Python 中,标识符是一个可以用来表示变量、函数、类或模块的名称。标识符必须以字母或下划线开头,只能包含字母、数字和下划线,且不能与 Python 的保留字冲突。
在这个例子中,“Hello12_” 是一个有效的标识符,因为它以字母 “H” 开头,后续部分包含字母和下划线,且不与 Python 的保留字冲突。所以,表达式的结果为True。
print("Hello12_".isidentifier()) # 返回值是 True
实例:检查字符串 “hello12” 是否只包含字母和数字。
实现原理:Python 的isalnum()
函数用于检查一个字符串是否只由字母和数字组成。如果字符串只包含字母和数字,该函数返回True
,否则返回False。
用途:在验证用户输入或处理文本时,常需要检查字符串是否只包含合法的字符。例如,用户输入用户名时,可能只允许使用字母和数字,而不允许使用特殊字符或空格。
注意事项:如果需要检查字符串中的某个具体字符是否为字母或数字,可以使用isalpha()
或isdigit()
函数。例如,要检查字符串中的字符’a’是否为字母,可以使用'a'.isalpha()
;要检查字符串中的字符’1’是否为数字,可以使用'1'.isdigit()
。
print("hello12".isalnum()) # 返回值是 True
实例:检查字符串 “Hello12_” 是否为标题式字符串。要检查一个字符串是否为标题式字符串,可以使用str.istitle()
方法。如果字符串是标题式字符串,这个方法将返回True
,否则返回False
。
实现原理:str.istitle()
方法会检查字符串是否符合标题式字符串的规则。标题式字符串是指这样,每个单词的第一个字母(第一个除外)都是大写的,所有其他字符都是小写的。换句话说,它会检查字符串是否类似于 “Hello World” 或 “This Is A Title” 。
用途:在Python
中,这个方法通常用于检查字符串是否符合特定的格式要求,例如在处理用户输入或进行文本处理时。
注意事项:如果需要确保字符串总是标题式字符串,可以使用str.title()
方法来替代str.istitle()
方法。str.title()
方法会返回一个新字符串,其中所有单词的首字母都已转换为大写,而其他字母都已转换为小写。
print("Hello12_".istitle()) # 返回值是 True
实例:检查字符串 “Hello” 是否只由字母组成。
实现原理:Python 的内置函数isalpha()
用于检查一个字符串是否只由字母组成。如果字符串中包含任何非字母字符,该函数将返回False
,否则返回True
。
用途:在处理字符串时,经常需要检查字符串是否只包含字母。例如,在验证用户输入时,可能需要检查用户名或密码是否只包含字母。
注意事项:需要注意的是,isalpha()
函数只会检查字符串中是否只包含字母,而不会检查字符串是否为空。如果需要检查字符串是否为空,可以使用isempty()
函数。
print("Hello".isalpha()) # 返回值是 True
实例:检查字符串 “123” 是否只包含数字字符。
实现原理:Python 中的isdigit()
方法用于检查一个字符串是否只由数字字符组成。如果字符串中包含其他字符,该方法将返回False
,否则返回True
。
用途:在验证输入时,常检查用户输入是否为数字,以避免输入错误。例如,在输入密码时,常需要确保输入的是数字字符,以增强安全性。
注意事项:如果需要检查的字符串不为数字,可以使用isalpha()
方法检查是否为字母字符。如果要检查的字符串包含字母和数字,可以使用isalnum()
方法检查是否为字母和数字字符。
print("123".isdigit()) # 返回值是 True
实例:用于检查字符串的大小写状态。isupper()
和islower()
是字符串类的方法,分别用于检查字符串是否全部为大写或小写字母。
实现原理如下:
print("ABC".isupper())
:调用isupper()
方法检查字符串"ABC"
是否全部为大写,如果是,返回True
,否则返回False
。print("ABC".islower())
:调用islower()
方法检查字符串"ABC"
是否全部为小写字母,如果是,返回True
,否则返回False
。
用途:在字符串处理中,经常需要检查字符串的大小写状态,例如在用户输入验证中,可以检查用户输入的密码是否包含大小写字母。
注意事项:需要注意的是,单独一个字符串调用这些方法不会返回字符串本身,而是返回一个布尔值。如果需要获取原始字符串,可以使用字符串切片或索引。
print("ABC".isupper()) # 返回值是 True
print("ABC".islower()) # 返回值是 False
实例:演示了字符串str的一些常用方法。
str.upper()
方法:将字符串中的所有小写字母转换为大写字母。str.lower()
方法:将字符串中的所有大写字母转换为小写字母。str.swapcase()
方法:将字符串中的大写字母转换为小写字母,并将小写字母转换为大写字母。str.capitalize()
方法:将字符串中的第一个字母转换为大写。str.title()
方法:将字符串中的每个单词的第一个字母转换为大写。str.count("the")
方法:计算字符串中"the"这个单词出现的次数。
这些方法可以帮助我们更好地处理字符串,例如在将文本输入数据库之前进行大小写转换,以便搜索时区分大小写。
str = "the relevant method of the string"
print(str.upper()) # 输出结果 THE RELEVANT METHOD OF THE STRING (内容全部变成大写)
print(str.lower()) # 输出结果 the relevant method of the string (内容全部变成小写)
print(str.swapcase()) # 输出结果 THE RELEVANT METHOD OF THE STRING (大写变小写, 小写变大写)
print(str.capitalize()) # 输出结果 The relevant method of the string (内容首字母变成大写)
print(str.title()) # 输出结果 The Relevant Method Of The String (内容中的每个字母开头变成大写)
print(str.count("the")) # 输出结果 2 (字母在字符串中出现的次数)
实例:定义一个变量f
并赋值为12.789
,然后使用round()
函数对f
进行四舍五入,保留两位小数。
实现原理:round()
函数接受一个数字(浮点数)作为参数,并返回最接近于参数的整数。如果参数值在两个整数之间,那么返回大于该参数的最小整数。例如,12.789
四舍五入后的结果是12.79
。
用途:在数据处理中,有时需要将浮点数保留指定的小数位数。round()
函数就可以满足这样的需求。
注意事项:
- 注意变量
f
的类型是float
,所以在使用round()
函数时,需要将f
转换为float
类型。 - 函数
round()
的参数是2
,表示保留两位小数。如果需要保留更多位的小数,可以修改参数值。 - 由于
print()
函数会自动在末尾添加一个换行符,所以print(round(f, 2))
输出时不会自动换行。如果想要在输出后换行,可以使用print()
函数的end
参数,例如print(round(f, 2), end="\n")
。
f = 12.789
print(round(f, 2)) # 输出结果 12.79
evel
函数的魅力
在 Python 的编程世界里,eval()
函数犹如一把双刃剑,它拥有将一串字符转化为活灵活现的表达式的能力,其力量之强大,让它在众多应用场景中显得尤为重要。本文将深入探讨eval()
函数的奥秘,通过一系列实例,向您展示其在Python编程艺术中的巧妙应用。
eval()
函数的基础语法结构如下:
result = eval(expression, globals=None, locals=None)
其中,expression
为待解析执行的 Python 表达式,以字符串形式呈现;globals
与locals
则是可选的全局与局部命名空间参数,它们定义了解析表达式时所依赖的变量环境。
- 简洁表达式的价值体现
result = eval("2 + 3")
print(result) # 输出结果 5
在此例中,eval()
将字符串"2 + 3"
瞬间转化为有血有肉的表达式,并赋予其生命,得出了令人满意的答案5
。
eval()
函数与简易计算器的完美结合
当需要快速实现一个计算器功能时,eval()
函数无疑是最佳选择,它能够轻松消化用户输入的表达式,并迅速给出答案。
实例:交互式计算器的诞生
while True:
expression = input("请输入一个数学表达式(输入 exit 退出):")
if expression == 'exit':
break
try:
result = eval(expression)
print("计算结果为:", result)
except Exception as e:
print("输入的表达式无效:", e)
输出结果:
请输入一个数学表达式(输入 exit 退出):9*4
计算结果为: 36
请输入一个数学表达式(输入 exit 退出):7+9
计算结果为: 16
请输入一个数学表达式(输入 exit 退出):9/3
计算结果为: 3.0
请输入一个数学表达式(输入 exit 退出):9-4
计算结果为: 5
这个例子中,我们打造了一个简易的交互式计算器,让用户能够与数字世界进行直接的对话。