Python 数据容器(三)字符串

1.3.3 str 字符串

字符串特点:

  1. 只可以存储字符串
  2. 长度任意(取决于内存大小)
  3. 支持下标索引
  4. 允许重复字符串存在
  5. 不可以修改(修改/增加/删除元素等) – tips: 不可修改字符串本身,但可通过replace替换得到一个新字符串
  6. 支持while / for循环
  • 常用操作方法
方法描述
字符串[下标]根据下标索引获取值
字符串.index(字符串)查找指定字符的第一个匹配项的下标
字符串.replace(字符串1, 字符串2)将字符串内的全部 字符串 1,替换为 字符串 2 ,不会修改原字符串,而是得到一个新的字符串
字符串.split(字符串)分隔字符串,不会修改原字符串,而是得到一个新的列表
字符串.strip()/字符串.strip(字符串)移除首尾的空格和换行符或指定字符串
字符串.count(字符串)统计字符串内某字符串的出现次数
len(字符串)统计字符串的字符个数
  • 字符串切片

实例:获取字符串str(原始字符串)从索引0(包括)到索引5(不包括)之间的子字符串。

实现原理:在Python中,字符串是不可变的,这意味着它们在内存中的表示是连续的字节序列。因此,通过索引访问字符串中的字符是高效的。当使用索引访问字符串时,Python会返回一个字节对象,而不是一个字符串。然而,在打印时,Python会自动将字节对象转换为字符串。

用途:在处理字符串时,经常需要从某个索引处截取字符串,以便进行进一步的操作。这种情况下,使用字符串索引就非常高效。

注意事项:

  1. 字符串的索引是从0开始的,而不是从1开始。因此,要取字符串的前5个字符,需要使用str[0:5]而不是str[:5]
  2. 字符串的索引是左闭右开,这意味着str[0:5]表示从索引0开始,到索引5(不包括)结束。如果要取字符串的最后一个字符,可以使用str[-1],而不是str[len(str) - 1]
  3. 如果要取字符串的某个子字符串,可以使用切片操作,例如str[start:end],其中startend是起始和结束索引。如果startend没有被指定,它们将默认为0和字符串的长度。
str = "Hello World"
new_str = str[0:5]
print(new_str)    # 输出结果 Hello
  • 字符串替换

实例:替换字符串中的某个字符串为另一个字符串。

实现原理:使用字符串的replace()方法,该方法接受两个参数:要被替换的子字符串和用于替换的新子字符串。在这个例子中,我们将字符串"Hello World"中的"World"替换为"Python"。

这段代码的用途是将简单的字符串操作封装成一个函数,例如在文章处理中,当需要替换文章中的特定词汇时,可以使用这样的代码。

注意事项:

  1. 方法的参数应该是字符串类型(str)。
  2. 方法返回一个新的字符串,通常会将原始字符串修改后返回。
  3. 如果要替换的字符串不存在,replace()方法将返回原始字符串,不会执行任何替换操作。
str = "Hello World"
new_str = str.replace("World", "Python")
print(new_str)    # 输出结果 Hello Python
  • 字符串大小写转换

实例:对字符串进行大小写转换

实现原理是:在 Python中,字符串是 immutable的,这意味着它们没有提供修改字符串内容的方法。但是,Python提供了字符串的转换方法,如lower()upper(),这些方法会返回一个新的字符串,原字符串不会被修改。

  1. 定义一个字符串变量str,赋值为"Hello World"。
  2. 使用str.lower()方法将str变小写,并将结果赋值给变量lower_str
  3. 使用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)中,然后打印出这个列表。

实现原理:

  1. 使用split()方法,该方法接受一个参数,即切割的标志。在这里,我们使用空格(" ")作为切割标志。
  2. split()方法会返回一个列表,其中包含切割后的子字符串。
  3. 我们将切割后的子字符串存储在strlist变量中,然后使用print()函数打印出这个列表。

用途: 这个代码片段通常用于学习 Python 字符串操作。它可以帮助用户了解如何使用split()方法根据某个标志(例如空格)将字符串切割成多个子字符串,并将结果存储在一个列表中。

注意事项:

  1. 字符串和列表都是可变的,因此它们在 Python 中可以被修改。在本例中,我们没有对strlist列表进行修改,而是直接打印了原始列表。在实际应用中,如果需要对列表进行修改,建议使用append()extend()insert()等方法来添加或修改元素,以避免混淆。
  2. 由于split()方法返回的是一个包含切割后子字符串的列表,因此原始字符串不会被修改。这在某些情况下非常有用,例如,我们可以通过其他方法来处理这些子字符串,而不会影响原始字符串。
str = "Hello World"
strlist = str.split(" ")
print(strlist)    # 输出结果 ["Hello", "World"]
  • 字符串连接

实例:将两个字符串元素(“Hello” 和 “World”)连接成一个字符串,并使用空格作为分隔符。

实现原理:将join()方法应用于一个列表(strlist),该方法会返回一个字符串,其中包含列表中元素之间的分隔符。

用途:

  1. 当你需要将几个字符串元素连接成一个字符串时,可以使用join()方法。
  2. 使用join()方法时,可以指定一个分隔符,以便在字符串元素之间插入。

注意事项:

  1. 确保在使用join()方法之前,列表中的元素都是字符串类型。
  2. 如果你想在连接的字符串中使用其他分隔符(例如逗号、句号等),可以使用join()方法的其他参数,例如join(strlist, ', '),这将使用逗号和空格作为分隔符。
strlist = ["Hello", "World"]
str = " ".join(strlist)
print(str)    # 输出结果 Hello World
  • 字符串去除左右两端字符

实例:使用strip()函数,从字符串的开头和结尾分别移除指定的字符。在这个例子中,我们要从字符串的开头和结尾移除字符!

实现原理:strip()函数是Python中的字符串方法,它接受一个参数,即要移除的字符。这个函数会从字符串的开头和结尾分别移除指定的字符。如果没有指定字符,则默认移除空格。

用途:在处理字符串时,有时需要移除字符串开头和结尾的字符,以达到某些目的(例如,去除字符串中的特殊标记或格式化字符)。

注意事项:

  1. strip()函数是字符串的方法,可以直接在字符串上调用。在上面的代码中,我们直接在str上调用strip()函数。
  2. 如果要移除的字符不是单个字符,而是字符串,则需要使用两个单引号或双引号括起来,以便strip()函数正确识别。例如,如果要移除字符串"!",可以使用str.strip("!")
  3. 确保提供的要移除的字符是正确的。如果传入的字符不在字符串的开头和结尾,或者字符串中不存在要移除的字符,strip()函数将不会执行任何操作,返回原始字符串。
  4. 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()是字符串类的方法,分别用于检查字符串是否全部为大写或小写字母。

实现原理如下:

  1. print("ABC".isupper()):调用isupper()方法检查字符串"ABC"是否全部为大写,如果是,返回True,否则返回False
  2. print("ABC".islower()):调用islower()方法检查字符串"ABC"是否全部为小写字母,如果是,返回True,否则返回False

用途:在字符串处理中,经常需要检查字符串的大小写状态,例如在用户输入验证中,可以检查用户输入的密码是否包含大小写字母。

注意事项:需要注意的是,单独一个字符串调用这些方法不会返回字符串本身,而是返回一个布尔值。如果需要获取原始字符串,可以使用字符串切片或索引。

print("ABC".isupper())  # 返回值是 True

print("ABC".islower())  # 返回值是 False
  • 字符串不常用函数

实例:演示了字符串str的一些常用方法。

  1. str.upper()方法:将字符串中的所有小写字母转换为大写字母。
  2. str.lower()方法:将字符串中的所有大写字母转换为小写字母。
  3. str.swapcase()方法:将字符串中的大写字母转换为小写字母,并将小写字母转换为大写字母。
  4. str.capitalize()方法:将字符串中的第一个字母转换为大写。
  5. str.title()方法:将字符串中的每个单词的第一个字母转换为大写。
  6. 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()函数就可以满足这样的需求。

注意事项:

  1. 注意变量f的类型是float,所以在使用round()函数时,需要将f转换为float类型。
  2. 函数round()的参数是2,表示保留两位小数。如果需要保留更多位的小数,可以修改参数值。
  3. 由于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编程艺术中的巧妙应用。

  1. eval()函数的基础语法结构如下:
result = eval(expression, globals=None, locals=None)

其中,expression为待解析执行的 Python 表达式,以字符串形式呈现;globalslocals则是可选的全局与局部命名空间参数,它们定义了解析表达式时所依赖的变量环境。

  1. 简洁表达式的价值体现
result = eval("2 + 3")
print(result)      # 输出结果 5

在此例中,eval()将字符串"2 + 3"瞬间转化为有血有肉的表达式,并赋予其生命,得出了令人满意的答案5

  1. 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

这个例子中,我们打造了一个简易的交互式计算器,让用户能够与数字世界进行直接的对话。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值