Python:从文本文件中提取节并将它们写入新的单独文本文件中
对不起,这里的问题很愚蠢 在python中,我有一个输入文本文件,如图所示,其中包括3个文本部分,我需要首先在每个文本部分的底部找到包含“shsux/en”的所有行,然后在这个部分下,我想循环并搜索以“udp”和“jkp”开头的所有行,并将整个部分输出到新的文本文件中 但我是Python的初学者,我不确定实现这一点的最佳方法是什么。感谢您的友好回复 像这样的Python:从文本文件中提取节并将它们写入新的单独文本文件中,python,loops,text,filter,line,Python,Loops,Text,Filter,Line,对不起,这里的问题很愚蠢 在python中,我有一个输入文本文件,如图所示,其中包括3个文本部分,我需要首先在每个文本部分的底部找到包含“shsux/en”的所有行,然后在这个部分下,我想循环并搜索以“udp”和“jkp”开头的所有行,并将整个部分输出到新的文本文件中 但我是Python的初学者,我不确定实现这一点的最佳方法是什么。感谢您的友好回复 像这样的 file1 = open('file1.txt', 'w') with open('source.txt', 'r') as sourc
file1 = open('file1.txt', 'w')
with open('source.txt', 'r') as source_file:
for line in source_file:
if 'shsux' in line:
file1.write(line)
# Same for other files...
file1.close()
我会这样做:
out_big = f.open(first_output_file, "w")
out_small_1 = f.open(second_output_file, "w")
out_small_2 = f.open(third_output_file, "w")
with open(source_file, "r") as f:
for line in f:
if "shsux" in line:
out_big.write(line)
if line.startswith("udp"):
out_small_1.write(line)
elif line.startswith("jkp"):
out_small_2.write(line)
out_big.close()
out_small_1.close()
out_small_2.close()
但是我认为没有必要使用带有“shsux”的大文件,所以您可以跳过它
抱歉,犯了一个错误,使用了endswith(),而不是startswith。如果我正确理解您的意图,我只需在行上创建一个循环,并将每行附加到相关列表(如果有),然后将这些列表写入末尾的文件。我不知道为什么你会考虑嵌套循环,所以也许我不完全理解期望的结果-如果是这样的话,你能详细说明吗?我想我想要的是首先找到“shsux”(作为一个分类器),然后可能使用嵌套循环找到“jkp”行和“udp”行,因为原始文件实际上相当大(它可能包含以“jkp”或“udp”开头的其他行,但结尾有其他我不需要的词),我只想过滤掉“jkp”和“udp”两个“shsux”行之间的行。更新了任务的描述。当返回所有三个列表时,它会起作用,但是如果我首先找到“shsux”行,并且可以在两个“shsux”行之间的每一行上方找到带有“udp”和“jkp”的行,该怎么办?谢谢你…我不确定这是否有效。