如何在Python中把一个文件分割成一个列表
在这篇文章中,我们将看到如何在Python中把一个文件分割成一个列表.
当我们想让文件的每一行都被列在连续的位置上,每一行都成为文件中的一个元素时,splitlines()或rstrip()方法被用来将一个文件分割成一个列表。让我们看几个例子,看看它是如何完成的.
示例1: 使用 splitlines()
文件是用 open()方法打开的,第一个参数是文件路径,第二个参数是一个字符串(mode),可以是’r’,’w’等,指定数据是要从文件中读取还是写入文件。read()方法从文件中读取数据,这些数据被存储在变量file_data中。打印出列表后,使用close()方法关闭文件.
创建一个名为 “examplefile.txt “的文本文件,如下图所示,该文件被用作输入.
# opening the file
file_obj = open("examplefile.txt", "r")
# reading the data from the file
file_data = file_obj.read()
# splitting the file data into lines
lines = file_data.splitlines()
print(lines)
file_obj.close()
输出:
['This is line 1,', 'This is line 2,', 'This is line 3,']
示例2: 使用 rstrip()
在这个例子中,没有使用 splitlines()方法,而是使用了 rstrip()方法。rstrip()方法删除了尾部字符。这个例子中给出的尾部字符是’\n’,是换行。for loop和strip()方法被用来将文件分成一个行的列表。文件在最后被关闭.
# opening the file
file_obj = open("examplefile.txt", "r")
# splitting the file data into lines
lines = [[x.rstrip('\n')] for x in file_obj]
print(lines)
file_obj.close()
输出:
[['This is line 1,'], ['This is line 2,'], ['This is line 3,']]
示例3: 使用split()
在用Python的’with’语句打开数据文件后,我们可以使用for循环来迭代数据文件的内容。读取数据后,使用 split() 方法将文本分割成单词。split()方法在默认情况下使用空格来分离文本.
with open("examplefile.txt", 'r') as file_data:
for line in file_data:
data = line.split()
print(data)
输出:
['This', 'is', 'line', '1,']
['This', 'is', 'line', '2,']
['This', 'is', 'line', '3,']
示例4: 用生成器分割一个文本文件
Python 中的生成器是一个特殊的技巧,可以用来生成一个数组。一个生成器,像一个函数一样,每次返回一个数组。生成器使用的是 yield 关键字。当 Python 遇到一个 yield 语句时,它会保存函数的状态,直到以后再次调用生成器。yield 关键字保证了我们的 while 循环的状态在迭代之间被保存。在处理大文件时,这可能很有用
# creating a generator function
def generator_data(name):
# opening file
file = open(name, 'r')
while True:
line = file.readline()
if not line:
# closing file
file.close()
break
# yield line
yield line
data = generator_data("examplefile.txt")
for line in data:
print(line.split())
输出:
['This', 'is', 'line', '1,']
['This', 'is', 'line', '2,']
['This', 'is', 'line', '3,']
示例5: 使用列表理解法
Python 列表理解是一种处理列表的漂亮方式。列表理解很强大,而且它的语法更短。此外,列表理解语句通常更容易阅读。
为了读取前面例子中的文本文件,我们不得不使用 for 循环。使用列表理解,我们可以用一行代码取代我们的for循环。
在通过列表理解获得数据后,split()被用来分离各行,并将其追加到一个新的列表中。让我们看一个例子来理解。
with open("examplefile.txt", 'r') as file:
data = [line.strip() for line in file]
print(data)
# iterating through data
for line in data:
print(line.split())
Output:
['This is line 1,', 'This is line 2,', 'This is line 3,']
['This', 'is', 'line', '1,']
['This', 'is', 'line', '2,']
['This', 'is', 'line', '3,']
示例6: 将一个文本文件分割成多个文本文件
如果我们有一个大文件,在一个文件中查看所有的数据是很困难的,我们可以把数据分割成多个文件。让我们看一个例子,我们把文件数据分割成两个文件。
Python 列表切分法可以用来分割一个列表。首先,我们用 readlines() 方法读取文件。然后将文件的前半部分/上半部分复制到一个名为 first half.txt 的新文件。在这个for循环中,我们将使用列表切分法将主文件的前半部分写到一个新文件中。
第二个循环用于将另一部分数据写入第二个文件。后半部分的数据包含在second half.txt中。为了进行分片,我们需要使用len()方法来确定主文件中的行数 最后,使用int()方法将除法结果转换为一个整数值
# opening the main file
with open("examplefile.txt", 'r') as file:
data = file.readlines()
# writing half of the data in one file
with open("first_half.txt", 'w') as file1:
for line in data[:int(len(data)/2)]:
file1.write(line)
# writing another half of the data in one file
with open("second_half.txt", 'w') as file2:
for line in data[int(len(data)/2):]:
file2.write(line)
输出: