9.2 KiB
如何使用 Python Split 函数
原文:https://www.pythonforbeginners.com/strings/how-to-use-python-split-function
Python 提供了一个用于拆分字符串的内置方法。使用 split() 函数,我们可以将单个字符串分解成一个字符串列表。
使用 split()是将大型字符串分解成更易于管理的部分的一种简单而有效的方法。
如果我们的任务是处理文本文件,这可能是一个有用的方法,我们将在后面看到。
Split 函数的定义和语法
split() 方法使用分隔符将字符串分隔成单个单词,也称为分隔符。Python 使用空白作为默认分隔符,但是您可以自由地提供一个替代符。
分隔符可以是任何东西,但通常是用来分隔字符串中单词的字符。例如,逗号通常用于拆分列表。
# the following string uses a comma as the separator.
groceries = “Bread,Milk,Eggs,Bananas,Coffee”
split()函数将返回一个字符串列表。默认情况下,对返回列表的长度没有限制。但是你可以用 maxsplit 设置来改变它。
语法:
my_string.split(separator,maxsplit)
**分隔符:**这是 Python 用来分割字符串的分隔符。如果没有提供分隔符,则使用空白作为分隔符。
maxsplit: 该设置用于决定字符串应该被拆分多少次。默认情况下,该列表没有限制。
为什么要在 Python 中使用 split()函数?
使用 split()函数有很多好的理由。无论是使用逗号分隔值(CSV)文件,还是试图将一个大字符串分解成小部分,split()都提供了一种在 Python 中分割字符串的有效方法。
split()函数将把一个字符串分解成单词列表。这些以 Python 字符串数组的形式返回给我们。下面是使用 split()的分步指南:
- 创建一个字符串。
- 使用 Python split()函数
- 打印结果
gandalf = "You shall not pass."
gandalf.split() # The string will be split based on whitespace.
这是我们分开绳子时的样子。
['You', 'shall', 'not', 'pass.']
使用 split() 函数和 python 字符串连接来快速连接和拆分字符串。split()函数对于快速解析逗号分隔值(CSV)文件也很有用。
Python 分割函数的示例
当我们使用 split()函数分割一个字符串时,Python 返回一个新的字符串数组。该数组保存拆分后的字符串。
比如说。如果我们有一个类似这样的字符串:
frosty_string = "Some say the world will end in fire."
我们可以看到字符串中的单词由空格分隔。用这个字符串运行 split()将返回一个新数组,其中包含罗伯特·弗罗斯特的一首著名诗歌的开头一行的单词。
示例 1:使用 Python split()和一个基本字符串
# this line is from Fire and Ice by Robert Frost
frosty_string = "Some say the world will end in fire."
words = frosty_string.split()
print(words)
输出
['Some', 'say', 'the', 'world', 'will', 'end', 'in', 'fire.']
还可以使用 split()将列表分成预定义数量的部分。正如我们在它的定义中看到的,split()函数有一个可选的第二个参数。通过设置 maxpslit ,我们可以告诉 Python 将列表分成两部分。
示例 2:使用 Python Split 将列表分成两部分
fruit = "Apples Oranges"
# setting maxsplit to 1 will return a list with 2 parts
two_max = fruit.split(' ', 1)
print(two_max)
输出
['Apples', 'Oranges']
使用逗号分割字符串数据
我们已经看到了 split()函数的基本用法。默认情况下,split()使用空格来分割字符串。虽然空格适用于某些数据,但其他字符通常更有意义。通常使用逗号来分隔字符串中的值。
使用逗号,我们可以很容易地快速拆分大量的字符串数据。在以下示例中,包含通用摇滚乐队中所有乐器的字符串被拆分为一个新列表。
示例 3:使用逗号作为分隔符
# use a comma as the separator
band = "Guitar,Piano,Drums,Trumpet,Bass Guitar,Vocals"
instruments = band.split(',')
print(instruments)
输出
['Guitar', 'Piano', 'Drums', 'Trumpet', 'Bass Guitar', 'Vocals']
使用逗号作为分隔符可以很容易地将字符串转换成列表。将字符串转换成列表(反之亦然)是一种存储和读取数据的便捷方法。
用 Split()函数读取文本文件
我在电脑上创建了一个名为 chess.txt 的文本文件。该文件与我的 Python 文件位于同一文件夹中。
这个文本文件包含一行,列出了国际象棋游戏中使用的棋子。请注意,逗号用于分隔各部分的名称。
国王、王后、车、骑士、主教、棋子
利用 split(),我们可以很容易地将游戏棋子分开。我们将使用 Python 的 open() 方法来读取文件,并在分割字符串之前提取文本行。
示例 4:使用 split()分隔文本文件中的单词
file = open("chess.txt")
pieces = file.read().split(',')
print(pieces)
输出
['King', 'Queen', 'Rook', 'Knight', 'Bishop', 'Pawn\n']
将 Strip()与 Split()函数一起使用
回头看看上一个例子,您可能会注意到我们的列表有些奇怪。我们在某个地方发现了一些迷失的角色。那个 \n 是哪里来的?
这是新的行字符。它告诉 Python 我们已经到达了文本文件的行尾。
我们可以利用 Python 的 strip() 方法把新的行字符从我们的列表末尾去掉。使用这种方法将确保我们不会从文件中提取任何讨厌的隐藏字符,例如 \n 字符**。**
file = open("chess.txt")
pieces = file.read().strip().split(',')
print(pieces)
file.close()
输出
['King', 'Queen', 'Rook', 'Knight', 'Bishop', 'Pawn']
拆分多行文本
上面的例子是相对基础的。毕竟,我们只有一行文本要处理。但是如果我们有用逗号分隔的数据行呢?让我们看看读取一个简单的数据库可能是什么样子。
我们将为一位需要计算班上每个学生平均成绩的老师编写一个程序。
我们的客户需要跟踪他/她的学生的作业。具体来说,他/她想要一种读取存储在文本文件中的数据的方法。这个名为 grades.txt 的文件包含了老师的学生的成绩。
我们的 teachers_pet.py 程序将从一个文件中读取信息,并构建一个包含成绩数据的字符串。
一旦我们有了成绩字符串,我们就可以使用 split()函数来拆分成绩并将它们存储在一个列表中。之后,我们需要使用 float() 方法将字符串转换成数字。
虽然这确实是一个复杂的过程,但是这个例子展示了在 Python 中处理数字和字符串的各种方法。
grades.txt 诺亚 81、94、100、65 伊利亚 80、84、72、79 卢卡斯 95、80、89、89 艾玛 95、80、80、80、77 艾娃 90、84、85、80 阿米莉亚 100、100、95、0
例 5:教师的宠物项目
# teachers_pet.py
file = open("grades.txt", 'r')
grade_data = []
while(True):
line = file.readline()
if not line:
break
grade_data.append(line.split(','))
print(grade_data)
file.close()
# this function will loop through the student's grades
def calculate_averages(grades_data):
for grades in grade_data:
total = 0
# the student's name occupies the first spot
for i in range(1,len(grades)):
total += float(grades[i].strip()))
avg = total/float(len(grades)-1)
print("{} has an average of {}.".format(grades[0],avg))
calculate_averages(grade_data)
输出
Noah has an average of 85.0
Elijah has an average of 78.75
Lucas has an average of 88.25
Emma has an average of 83.0
Ava has an average of 84.75
Amelia has an average of 73.75
我们的节目有两部分。在第一部分中,我们用 open()方法从文件中读取数据。一行一行地,每个学生的成绩被添加到一个名为 grades_data 的列表中。
我们利用 float() 将字符串转换成数字。我们还将使用 strip() 删除任何不必要的字符,例如 \n 字符。
请记住,成绩列表中的第一个元素是学生的姓名。
我们还需要一个函数来计算和打印成绩平均值。我们在**calculation _ averages()**中这样做。这个方便的功能将查看成绩数据,并找到每个学生的平均绩点。
进一步研究的教训
Python 附带了许多可以改进代码的内置函数。split()函数就是这样一个工具,可以用来分解困难的字符串问题。
使用分隔符分隔字符串允许您将字符串数据转换为字符串列表,这样更易于管理。split()函数也是一种快速分解从文件中读取的文本数据的方法。
通过访问以下教程,了解关于 Python 以及如何提高编程技能的更多信息。