前言
记录一下python编程学习过程。
时间:2023年12月25日
字符串
在Python中,字符串是存储文本的数据类型。字符串可以包含字母、数字、符号和空格。Python中的字符串被定义为在单引号(')、双引号(")或三引号(''' 或 """)中的字符序列。
s1 = 'hello'
s2 = "world"
s3 = '''这是
多行
字符串'''
s4 = """另一个
多行
字符串"""
字符串操作
Python中的字符串提供了许多内置方法进行操作,比如:
len(str): 返回字符串的长度。str.upper(): 返回全部大写的字符串。str.lower(): 返回全部小写的字符串。str.capitalize(): 将字符串的第一个字符大写。str.replace(old, new): 替换字符串中的子串。str.split(sep): 将字符串按指定分隔符分割成列表。str.strip(): 去除字符串两端的空格或指定字符。
索引和切片
字符串中的字符可以通过索引访问,索引从0开始。Python也支持负索引,-1表示最后一个字符。
str = "Hello, World!"
print(str[0]) # 'H'
print(str[-1]) # '!'
print(str[2:5]) # 'llo' (切片操作)
在Python中,切片操作可以使用步长(stride)来控制。步长定义了在切片过程中跳过的元素数量。基本的切片语法是 [start:end:step],其中 step 就是步长。
start表示切片开始的位置。end表示切片结束的位置(不包括此位置)。step表示在两个元素之间的间隔,即步长。
如果步长为正,切片从左向右提取元素;如果步长为负,切片从右向左提取元素。
假设我们有一个字符串 "Hello World",我们可以使用不同的步长来进行切片操作:
str = "Hello World"
# 步长为1(默认值)
print(str[0:5:1]) # Hello
# 步长为2
print(str[0:5:2]) # Hlo
# 没有开始和结束,步长为2
print(str[::2]) # HloWrd
# 步长为-1,反向
print(str[::-1]) # dlroW olleH
# 步长为-2,从字符串末尾开始,每隔一个字符取一个
print(str[::-2]) # drWolH
使用步长,你可以很灵活地从序列中提取需要的部分。在没有指定 start 和 end 的情况下,使用正步长会从序列的开头开始到结尾,使用负步长会从序列的末尾开始到开头。
字符串是不可变的
在Python中,字符串是不可变的,这意味着你不能改变字符串中的单个字符。但你可以通过拼接和其他操作来创建新的字符串。
str = "Hello"
str = str + " World" # 正确
# str[0] = "h" # 错误,会引发TypeError
字符串格式化
Python提供了几种方式来格式化字符串:
-
使用
%操作符:name = "Alice" age = 25 print("%s is %d years old." % (name, age)) -
使用
str.format()方法:print("{} is {} years old.".format(name, age)) -
使用 f-string (Python 3.6+):
print(f"{name} is {age} years old.")字符串是Python中最常用的数据类型之一,用于处理各种文本数据。
字符串的切割和替换
在Python中,字符串可以通过内置的方法轻松地进行切割和替换。下面是这两种操作的基本用法:
字符串切割
字符串切割通常是通过 split() 方法来实现的。这个方法将字符串分割成子字符串,并返回一个列表。
text = "apple, banana, cherry"
result = text.split(", ")
print(result) # 输出: ['apple', 'banana', 'cherry']
在上面的例子中,字符串 text 被逗号加空格 ", " 分割成了多个部分。
字符串替换
字符串替换可以通过 replace() 方法来实现。这个方法将字符串中的某个子串替换成另一个子串。
text = "I like oranges"
new_text = text.replace("oranges", "apples")
print(new_text) # 输出: I like apples
在这个例子中,"oranges" 被替换成了 "apples"。
进阶用法
- 如果你只想分割字符串的几个部分,可以传递一个额外的参数给
split()方法,这个参数指定了分割的次数。
text = "apple, banana, cherry"
result = text.split(", ", 1)
print(result) # 输出: ['apple', 'banana, cherry']
replace()方法也可以接收一个可选的第三个参数,表示替换的最大次数。
text = "hello world, hello universe, hello galaxy"
new_text = text.replace("hello", "hi", 2)
print(new_text) # 输出: hi world, hi universe, hello galaxy
这些方法是处理字符串时非常有用的工具,可以用于各种文本处理和数据清洗任务。
字符串的查找和判断
在Python中,你可以使用多种方法来查找字符串中的子串,以及判断字符串是否符合特定的条件。这些方法包括:
字符串查找
- find() 和 rfind()
find()方法在字符串中查找子串,并返回子串的最低索引。如果未找到子串,则返回 -1。rfind()方法类似,但它返回的是子串在字符串中最后出现的位置。
text = "hello world"
index = text.find("world")
print(index) # 输出: 6
index = text.find("python")
print(index) # 输出: -1
-
index() 和 rindex()
-
这些方法与
find()和rfind()类似,但如果子串不存在,它们会引发一个ValueError异常。text = "hello world" try: index = text.index("world") print(index) # 输出: 6 index = text.index("python") except ValueError: print("Substring not found")
-
-
in 操作符
- 可以使用
in关键字来检查一个字符串是否包含另一个字符串。
text = "hello world" if "world" in text: print("Substring found") else: print("Substring not found")字符串判断
Python还提供了一系列的方法来判断字符串是否符合特定的格式:
-
isalpha()
- 检查字符串是否只包含字母。
-
isdigit()
- 检查字符串是否只包含数字。
-
isalnum()
- 检查字符串是否只由字母和数字组成。
-
isspace()
- 检查字符串是否只包含空格。
-
islower()
- 检查字符串中的所有字母是否都是小写。
-
isupper()
- 检查字符串中的所有字母是否都是大写。
-
istitle()
- 检查字符串是否符合标题格式(每个单词的首字母大写)。
-
startswith() 和 endswith()
- 检查字符串是否以特定的子串开始或结束。
text = "Hello World" print(text.startswith("Hello")) # 输出: True print(text.endswith("World")) # 输出: True
- 可以使用
补充和总结
len()函数
在Python中,len() 是一个内置函数,用于返回对象中元素的数量。它可以用于各种数据类型,包括但不限于字符串(String)、列表(List)、元组(Tuple)、字典(Dictionary)、集合(Set)以及其他任何定义了 __len__ 方法的可迭代对象。len() 函数对于日常编程非常有用,因为它提供了一种快速而简单的方式来获取数据结构中元素的计数。
示例:
# 字符串中的字符数量
string = "Hello"
print(len(string)) # 输出: 5
# 列表中的元素数量
list_example = [1, 2, 3, 4, 5]
print(len(list_example)) # 输出: 5
# 元组中的元素数量
tuple_example = (1, 2, 3, 4, 5)
print(len(tuple_example)) # 输出: 5
# 字典中的键-值对数量
dictionary_example = {'a': 1, 'b': 2, 'c': 3}
print(len(dictionary_example)) # 输出: 3
# 集合中的唯一元素数量
set_example = {1, 2, 2, 3, 4}
print(len(set_example)) # 输出: 4 (因为集合中的 "2" 只计算一次)
join()函数
在Python中,字符串的 join() 方法是用来将序列中的元素以指定的字符连接生成一个新的字符串。序列中的元素通常是字符串。这是一个非常实用的方法,尤其是在需要将多个字符串有效地连接在一起时。
以下是 join() 方法的基本用法:
numbers = [1, 2, 3, 4, 5]
# 使用列表推导式将数字转换为字符串
string_numbers = [str(number) for number in numbers]
joined_string = ', '.join(string_numbers)
print(joined_string) # 输出: 1, 2, 3, 4, 5
总结
-
f"{变量}" 格式化一个字符串
-
索引和切片: 索引:从0开始的.[ ] 切片:s[start:end:step],end位置的数据永远拿不到
-
相关操作: 字符串操作对原字符串是不发生改变的
- upper():在需要忽略大小写的时候
- strip():可以去掉字符串左右两端的空白(空格,\t,\1)
- replace():字符串替换
- split():对字符串进行切割
- join():拼接一个列表中的内容成为新字符串
- startswith():判断字符串是否以xxx开头
- len():字符串长度(内置函数)
字符串的循环和遍历 for x in s:
in:
- 判断xxx是否在某字符出现
- for循环