使用python按特定字符串或行号将文本文件拆分为多个文件



想要根据特定的文本(字符串)分割文本文件,但无法找到解决方案,因此首先收集该字符串存在的行号,然后尝试分割文件。

下面是从文本文件中收集行的代码。

file1 = open("textfile_1.txt", "r")
string1 = 'Weight Total'
flag = 0
index = 0
fl = 1
Spl_Lines = []
for line in file1:  
index += 1 
if string1 in line:
Spl_Lines.append(index)
print(Spl_Lines)

作为结果得到行号,其中"Weight Total"提到。

把:[350, 850, 1123, 1640, 1810, 2250]

现在想要从列出的行分割文本文件,所以我尝试下面的代码,但它没有工作。难以分割文本文件与特定字串匹配。

lines = file1.readlines()
# print(lines) getting blank
for i in Spl_Lines:
with open('E'+str(fl)+".txt",'w') as file:
for line in lines[i]:
file.write(line)
fl += 1

我尝试了这个,但不工作,如何通过特定的字符串或列出的行拆分文本文件成多个文件。

这可以在输入文件的一次传递中完成,如下所示:

key = 'Weight Total'
outfile = None
fileno = 0
lineno = 0
with open('textfile_1.txt') as infile:
while line := infile.readline():
lineno += 1
if outfile is None:
fileno += 1
outfile = open(f'E{fileno}.txt', 'w')
outfile.write(line)
if key in line:
print(f'"{key}" found in line {lineno}')
outfile.close()
outfile = None
if outfile:
outfile.close()

注意:

这假定包含键的任何行都将包含在输出文件

为什么不在您的string1上分割字符串,然后将文本附加回去?

file1 = open("textfile_1.txt", "r")
string1 = 'Weight Total'
text = file1.read()
text_splitted = [i + string1 for i in text.split(string1)]

相关内容

  • 没有找到相关文章

最新更新