Python 3.x 如何分别处理每个“文本块”

Python 3.x 如何分别处理每个“文本块”,python-3.x,Python 3.x,希望你能帮忙 我有一个类似下面的文件。有许多行文本与条目关联。每个条目之间用空格分隔*********** 我编写了一些代码,在每行中循环,检查一些条件,然后将输出写入csv。然而,我不知道如何对整个部分,而不是每一行这样做 我有点想让线路在线路上循环。但我需要对文档中的每个部分都这样做 有人能帮忙吗 我的尝试: 分割线似乎不起作用 import csv from itertools import islice output = "Desktop/data.csv" f = open("Des

希望你能帮忙

我有一个类似下面的文件。有许多行文本与条目关联。每个条目之间用空格分隔***********

我编写了一些代码,在每行中循环,检查一些条件,然后将输出写入csv。然而,我不知道如何对整个部分,而不是每一行这样做

我有点想让线路在线路上循环。但我需要对文档中的每个部分都这样做

有人能帮忙吗

我的尝试: 分割线似乎不起作用

import csv
from itertools import islice

output = "Desktop/data.csv"
f = open("Desktop/mpe.txt", "r")


lines = f.readlines().splitlines('*************************************************')
print(lines)
for line in lines:
    if 'SEND_HTTP' in line:
        date = line[:10]
        if 'FAILURE' in line:
            status = 'Failure'
        else:
            status = 'Success'
        if 'HTTPMessageResponse' in line:
            response = line

with open(output, "a") as fp:
     wr = csv.writer(fp, dialect='excel')
     wr.writerow([date, status, response])
文件:


您可以首先使用方法分隔条目


这将在示例文件中循环,将每个“部分”拆分为50个星号*字符

fileHandle = open(r"Desktop/mpe.txt", "r")
splitItems = fileHandle.read().split("*"*49)
for index, item in enumerate(splitItems):
    if(item == ""):
        continue
    print("[{}] {}".format(index, item))
您可以删除print语句并对结果执行所需的操作。但是,这种形式的解析不是很好,因为如果文件没有正好50个星号,这将中断


如果您的示例与实际数据相符,则if检查将跳过任何空条目。我建议创建一个函数get_sections,该函数将返回生成器,每次生成一个节。这样,您就不必将整个文件加载到内存中

def get_部分: 使用openDesktop/mpe.txt作为f: 节=[] 对于f中的行: 如果**********不一致: 第1节附录行 其他: 屈服截面 节=[] 对于get_部分中的部分: 打印新部分 对于段中的行: 印刷线 你在这里处理吗
请您将建议的代码修复为实际运行的状态好吗?如果星号的数量不能保证,您可以使用正则表达式,例如:sections=re.compile^\*+$,re.MULTILINE.splitf.read
f = open("Desktop/mpe.txt", "r")
sections = f.read().split("*************************************************\n")
for section in sections:
    for line in section.split("\n"):
        # your code here
fileHandle = open(r"Desktop/mpe.txt", "r")
splitItems = fileHandle.read().split("*"*49)
for index, item in enumerate(splitItems):
    if(item == ""):
        continue
    print("[{}] {}".format(index, item))