如何使用Python分割函数

398 阅读7分钟

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)

separator:这是 Python 用来分割字符串的分隔符。如果没有提供分隔符,则使用空白作为分隔符。

maxsplit :这个设置用于确定字符串应该被分割多少次。这个列表在默认情况下没有限制。

为什么在 Python 中使用 split() 函数?

有很多使用 split() 函数的好理由。无论你是在处理一个逗号分隔值 (CSV) 文件,还是仅仅想把一个大的字符串分解成小的部分,split() 都提供了一种在 Python 中分割字符串的有效方法。

split()函数将一个字符串分解成单词列表。这些词会以Python字符串数组的形式反馈给我们。

下面是一个使用 split() 的分步指南。

  1. 创建一个字符串。
  2. 使用Python split()函数
  3. 打印结果
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函数的例子

当我们使用 split() 函数来分割一个字符串时,Python 会返回一个新的字符串数组。这个数组持有分割后的字符串。

比如说。如果我们有一个看起来像这样的字符串。

frosty_string = "Some say the world will end in fire."

我们可以看到,这个字符串的字是由空格分隔的。用这个字符串运行split()将返回一个新的数组,其中包含Robert Frost的一首著名诗歌的开头部分的单词。

例子 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 文件位于同一个文件夹中。

这个文本文件包含一个单行,列出了一盘棋中使用的棋子。注意,用逗号来分隔棋子的名字。

King,Queen,Rook,Knight,Bishop,Pawn

通过使用 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
Noah, 81, 94, 100, 65
Elijah, 80, 84, 72, 79
Lucas, 95, 80, 89, 89
Emma, 95, 80, 80, 77
Ava, 90, 84, 85, 80
Amelia 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字符。

请记住,成绩列表中的第一个元素是学生的名字。

我们还需要一个函数来计算和打印平均成绩。我们在calculage_averages()中完成这一工作。这个方便的函数将查看成绩数据并找出每个学生的平均成绩。