从多个.txt文件中提取数据并汇总到excel

问题描述 投票:0回答:1

编辑版本 4/24/2023:

我是 python 和学习的新手,但尝试了几种不同的方法来解决这个问题,我就是无法让它们工作。

我在一个文件夹中有多个 .txt 文件(548 份报告),我想逐行读取这些文件并提取特定变量并将它们汇总到 excel 中。这些文件是 .txt 文件,都包含相同类型的信息和格式。所有报告都具有相同的变量,并且在每个报告中,这些变量均以新行开始,但在所有报告中,它们不在完全相同的行上(因此我记不起所有报告的行),我使用的是 line. startswith ('Date')) 来提取行,但实际上我需要将这些变量提取到 excel 文件中以供进一步分析。

我不知道我是否有好的方法,或者我是否需要不同的方法。所以,我正在寻找有关如何将这些数据导入 excel 的建议,即使这意味着改变我已有的数据。

下面的代码有效,但它一次只能拉回一个变量。我想我需要分配一个标签或键以及后续值才能将其解析为 excel。我有 9 个变量(列)我正在寻找聚合和大约 548 个不同的报告(行)。


import glob
files=glob.glob("C:/Users/Base/Desktop/Data/*.txt")   #single string 
for f in files:
    with open(f, 'r', encoding="utf8") as document:         #fix encoding
        s = document.read()

for filename in files:                                   #open file and read
    with open(filename, "r", encoding="utf8") as file:
        for line in file:
            line = line.strip()                     #strip the whitespace
            if line.startswith('Type of Compromise'):      
#the above returns the line for each of the 548 reports
#I need it to pull back multiple variables into excel
                print(line)

我想我可以在一个代码中添加所有变量(类似于下面)并将其提取然后将其解析为 excel。当我添加额外的变量时,它会破坏代码并且没有输出(或错误消息以进行故障排除)。

        for line in file:
            line = line.strip()
            if line.startswith('Date'):  
                print(line)
        for line in file:
            line = line.strip()
            if line.startswith('Type'): 
                print(line)
        for line in file:
            line = line.strip()
            if line.startswith('Detection'):   
                print(line)

我正在寻找一个 Excel 电子表格,其中包含我从这些报告中解析出的数据。感谢您的帮助。

~费利西亚

python loops extract
1个回答
0
投票

看起来你在文件

name
上使用 startswith 而不是文件的内容。

尝试改变:

for line in files:
    # Parse line

致:

for filename in files:
    with open(filename, "r") as file:
        for line in file:
            # Parse line

这样,您将打开每个文件并逐行阅读。 “r”代表阅读模式。

© www.soinside.com 2019 - 2024. All rights reserved.