遍历目录中的文件并将结果写入数据帧的新行中

2024-04-26 09:32:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一个目录中迭代文件,提取一些信息,并使用pandas将其写入excel工作表。 我有这段代码,但只有当我迭代一个文件(没有循环)时才有效,当我使用循环并尝试迭代所有文件时,输出是一个空的excel表。你知道吗

import re
import os
import pandas as pd
files=[i for i in os.listdir("path") if i.endswith("txt")]
for file in files:
    f=open((file), 'r')
    data=f.read()
    a=re.findall(r'Company Name(.*?)Type',data,re.DOTALL)
    a1="".join(a).replace('\n',' ')
    b=re.findall(r'Sector(.*?)Sub Sector',data,re.DOTALL)
    b1="".join(b).replace('\n',' ')
    w={'Company Name': [a1], 'Sector': [b1]}
    df=pd.DataFrame(data=w)
    print (os.path.join(file))
df.to_excel(r'/Users/nameuser/info.xlsx') 

我看到它遍历了所有的文件,但是这样输出是空的。你知道吗

如何才能使每个文件中的所有信息累积起来并存储到excel文件的新行中?你知道吗


Tags: 文件inimportre信息pandasfordata
1条回答
网友
1楼 · 发布于 2024-04-26 09:32:17
import re
import os
import pandas as pd

files=[i for i in os.listdir("path") if i.endswith("txt")]

w={'Company Name': [], 'Sector': []}

for file in files:

    f=open((file), 'r')
    data=f.read()
    a=re.findall(r'Company Name(.*?)Type',data,re.DOTALL)
    a1="".join(a).replace('\n',' ')
    b=re.findall(r'Sector(.*?)Sub Sector',data,re.DOTALL)
    b1="".join(b).replace('\n',' ')
    w['Company Name'].append(a1) 
    w['Sector'].append(b1)

    print (os.path.join(file))

df=pd.DataFrame(data=w)
df.to_excel(r'/Users/nameuser/info.xlsx')

这样,您可以将所有数据填充为dict,然后将其转换为数据帧。你知道吗

相关问题 更多 >