使用 Python 分割文本文件的最快方法

2024 年 08 月 29 日 | 阅读 9 分钟

Python 是全球最受欢迎的编程语言之一。它之所以如此受欢迎,一个原因是 Python 使得处理数据变得非常容易。从文本文件中读取数据在 Python 中是一项标准任务。在这里,我们将探讨使用 Python 读取和分割文本文件的最快方法。分割数据会将文本转换为列表,从而更容易处理。我们还将介绍 Python 中分割文本文件的其他几种方法,并解释这些方法何时以及如何有用。在接下来的示例中,我们将了解 Python 如何帮助我们掌握读取文本数据。利用 Python 的许多内置功能将提高我们的任务效率。

split() 方法

在 Python 中分割文本的最快方法是使用 split() 方法。这是一个内置方法,用于将字符串分割成各个部分。split() 方法将返回字符串中元素的列表。默认情况下,Python 使用空格来分割字符串,但您可以提供一个分隔符并指定要使用的字符。例如,逗号 (,) 通常用于分隔字符串数据。逗号分隔值 (CSV) 文件就是这种情况。无论您选择什么分隔符,Python 都会用它来分割字符串。

使用 split() 方法分割文本文件

在我们的第一个示例中,我们有一个包含员工数据(包括员工姓名、电话号码和职位)的消息文件。我们需要编写一个 Python 程序来读取这些随机生成的数据并将数据分割成记录。

使用 splitlines() 方法

文件使用 open() 方法打开,其中第一个参数是文件路径,第二个参数是一个字符串 (mode),可以是 'r'、'w' 等,用于指定是读取文件还是写入文件。在这里,我们正在读取文件,所以 mode 是 'r'。read() 方法从文件中读取数据,并将数据存储在 file_data 变量中。splitlines() 方法将数据分割成行,并返回一个列表对象。打印列表后,使用 close() 方法关闭文件。

参数

如前所述,splitlines() 函数只接受一个可选参数,如下所述:

保留结尾

参数类型 - 布尔值

默认值 - False

功能 - 当 Keep ends 参数设置为 True 时,换行符语句也会包含在生成的列表中。

现在,让我们看一下 splitlines() 函数的返回值。

Python 中 splitlines() 的返回值

splitlines() 函数返回一个由给定字符串中的换行符分隔的行的逗号分隔列表。但是,如果我们给 splitlines() 函数一个空字符串或一个没有换行符的字符串作为输入,会发生什么?

创建一个名为 "exfile.txt" 的文本文件,如上图所示,用作输入。

示例

输出

[ 'The day is sunny', 'The day is rainy', 'The day is cloudy' ]

使用 rstrip() 方法

在这个示例中,使用 rstrip() 方法而不是 splitlines() 方法。rstrip() 方法删除尾随字符。此示例中给出的尾随字符是 '\n',即换行符。使用 for 循环和 strip() 方法将文件分割成行列表。文件在最后关闭。

示例

输出

The string after splitting using rsplit() function is: 
['J', 'v', ' is ', ' progr', 'mming l', 'ngu', 'ge']

使用 split() 方法

在用 Python 的 'with' 语句打开文件后,我们可以使用 for 循环迭代文件中的项目。读取数据后,使用 split() 方法将文本分割成单词。split() 方法默认使用空格分隔文本。

split() 方法的参数

Python 中的 split() 函数接受两个参数:

separator: 分隔符是用于将主字符串分割成更小子字符串的字符。如果未提供,则默认使用空格作为分隔符。

maxCount: 它指定字符串应该被分割的次数。它是一个数字值,如果未提供,默认值为 -1,表示没有限制。

示例

输出

The characters after splitting the string using the split() method is:
['The', 'Quick', 'Brown', 'Fox', 'Jumps', 'Over', 'The', 'Lazy', 'Dog']
The characters after splitting the string using the split() method is:
['Hi', ' Welcome']

示例 1

输出

[ 'The', 'day', 'is', 'sunny,']
[ 'The', 'day', 'is', 'rainy,']
[ 'The ', 'day ', 'is', 'cloudy, ']

使用生成器分割文本文件

Python 中的生成器是一种可以用来生成序列的绝妙技巧。生成器与函数一样,一次返回一个序列项。生成器使用 yield 关键字。当 Python 遇到 yield 语句时,它会保存函数的当前状态,直到生成器被再次调用。yield 关键字确保我们的 while 循环在迭代之间保存状态。在处理大型文件时,这可能很有用。

示例

输出

[ 'The ', 'day', 'is', 'sunny, ']
[ 'The ', 'day', 'is', 'rainy, ']
[ 'The ', 'day', 'is', 'cloudy, ']

使用列表推导式

Python 以其能够编写优雅、易于编写且几乎像英语一样易于阅读的代码而闻名。该语言最显著的特性之一是列表推导式,您可以使用它在单行代码中实现强大的功能。然而,许多开发人员难以充分利用 Python 列表推导式的更高级功能。有些开发人员甚至过度使用它们,这可能导致代码效率低下且难以阅读。

Python 列表推导式是处理列表的绝佳方法。列表推导式功能强大,并且语法更短。此外,列表推导式通常更易于阅读。要读取前面示例中的文本文件,我们不得不使用 for 循环。使用列表推导式,我们可以用单行代码替换我们的 for 循环。

通过列表推导式获取数据后,使用 split() 分割行并将它们添加到另一个列表中。让我们看一个示例来理解。

参数

  • Expression 是实际的部分、对方法的调用,或者任何返回值的有效表达式。在上面的示例中,表达式 i * i 是部分值的平方。
  • Member 是列表或可迭代对象中的项目或值。在上面的示例中,部分值是 i。
  • Iterable 是一个列表、集合、元组、生成器,或者任何可以逐个返回其元素的 other object。在上面的示例中,iterable 是 range(10)。

示例

输出

[ 'The day is sunny', 'The day is rainy', 'The day is cloudy' ]
[ 'The ', 'day', 'is', 'sunny, ']
[ 'The ', 'day', 'is', 'rainy, ']
[ 'The ', 'day', 'is', 'cloudy, ']

将单个文本文件分割成多个文本文件

如果我们有一个大文件,并且在单个文件中查看所有数据很困难,我们可以将数据分割成多个文件。让我们看一个将文件数据分割成两个文件的示例。Python 列表切片可用于分割列表。首先,我们使用 readlines() 方法读取文件。然后将文件的前半部分/上半部分复制到名为 first_half.txt 的新文件中。在此 for 循环中,我们将使用列表切片将主文件的前半部分写入新文件。

使用第二个 for 循环将数据的另一部分写入第二个文件。数据文件中的后半部分包含在 second_half.txt 中。要执行切片,我们需要使用 len() 方法来确定主文件中的行数。最后,使用 int() 方法将分割结果转换为数字值。

示例

输出

first_h.txt:
The day is sunny, 
Second_h.txt:
The day is rainy,
The day is cloudy,