我有一个目录,其中包含大约100个txt文件。
这是我的txt文件的外观
...............some text...............
('Doc accuracy ', 0.936046511627907, ' No of corrections ', 11)
http://10.x.x.1/link
...............some text...............
('FinalSpreadSheet_len', 172)
Done processing filename : file1.pdf
Status : success
...............some text...............
在本文档中
accuracy = 0.936046511627907
url= http://10.x.x.1/link
Status : success
filename : file1.pdf
我有100个这样的不同文件。
我要做的是生成包含列
的excelfilename accuracy url status
对于每个文件,它应该从.txt文件中获取详细信息 并为100个这样的文件生成excel。
我的部分代码(我能够获取目录中的所有文件)
x = [f for f in os.listdir('G:/path/to/directory') if f.endswith('.txt')]
之后应该从列表中获取每个文件,并找到必要的值并生成excel
答案 0 :(得分:1)
由于您已经获得了包含目录中所有文件的列表,并假设您将名称存储在名为filenames_list
的列表中,因此该代码将起作用。
对于filename
内的每个filename_list
,此代码将:
open
文件read
并将其存储在名为list
的{{1}} lines
,它会检查是否存在以下任何内容:for
,'Doc accuracy'
,'http://'
或'Done processing filename :'
如果其中任何一个存在,对于每一个,程序将表现不同。
4.1如果找到术语'Status :'
,它会将其存储在名为'http://'
的变量中;
4.2如果找到url
,它会将其值存储在变量'Status :'
中,等等......
<强>代码:强>
status
<强>输出:强>
filename_list = ['file1.txt', 'file2.txt', 'file3.txt', ...]
valuable_data = []
for filename in filename_list:
with open(filename, 'r') as f:
lines=f.readlines()
for l in lines:
if 'Doc accuracy' in l:
acc = l.split(",")[1].strip()
if 'http://' in l:
url = l
if 'Done processing filename :' in l:
fname = l.split(" : ")[1]
if 'Status :' in l:
status = l.split(" : ")[1]
valuable_data.append([fname, acc, url, status])
print(valuable_data)
使用Pandas写入CSV:(to_csv module)
[['file1.pdf', '0.936046511627907', 'http://10.x.x.1/link', 'success']]